Intro ElasticSearch RangeQuery And TermsQuery

Intro ElasticSearch RangeQuery And TermsQuery

這篇介紹ElasticSearch RangeQuery And TermsQuery。

查時間區間 example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
KQL:
{
"bool": {
"filter": [
{
"range": {
"dailydate": {
"from": "2021-08-01 00:00:00",
"to": "2021-08-01 23:59:59",
"include_lower": true,
"include_upper": true,
"format": "yyyy-MM-dd HH:mm:ss"
}
}
}
]
}
}
---
RestHighLevelApi:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.filter(QueryBuilders.rangeQuery("dailydate")
.format(FormatUtils.DATE_PATTERN_DASH_YYYY_MM_DD_BALNK_HH_MM_SS).from(startTime, true).to(endTime, true));
sourceBuilder.query(queryBuilder);

查單一欄位 example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
KQL:
{
"bool": {
"must": {
"term": {
"userId": "Mike"
}
}
}
}
---
RestHighLevelApi:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.must(QueryBuilders.termQuery("userId", "Mike"));
sourceBuilder.query(queryBuilder);

查多個欄位(OR) example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
KQL:
{
"bool": {
"should": [
{
"term": {
"status": 1
}
},
{
"term": {
"status": 0
}
}
]
}
}
---
RestHighLevelApi:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.should(QueryBuilders.termQuery("status", 1));
queryBuilder.should(QueryBuilders.termQuery("status", 0));
sourceBuilder.query(queryBuilder);

查單個欄位(>= and <=) example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
KQL:
{
"bool": {
"range": {
"score": {
"gte": 10,
"lte": 20
}
}
}
}
RestHighLevelApi:
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery();
queryBuilder.filter(QueryBuilders.rangeQuery("score").gte(10));
queryBuilder.filter(QueryBuilders.rangeQuery("score").lte(20));
sourceBuilder.query(queryBuilder);