Elasticsearch

[Elasticsearch] query, aggregation size 변경

지네딘 주안 2020. 8. 11. 20:57

Query, Terms Aggregation 사용 시 모든 bucket이 나오지 않는 문제

원인 :

검색 결과의 default size가 전체 return 개수보다 작아서 발생(default = 10)

 

해결방법 :

명시적으로 return 크게 size 지정

// term

TermsAggregationBuilder termsAggregation = AggregationBuilders

        .terms("count_by_rule_id")

        .field("rule_id")

        .size(errorRuleController.getErrorRules().size()+50); // error rule 사이즈보다 작으면 집계 과정에서 결과 누락됨

 

 

// Query

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery()

.must(QueryBuilders.termQuery("rule_id", ruleId))

.filter(QueryBuilders.rangeQuery("timestamp").gte(startTime).lte(endTime));

 

searchSourceBuilder.query(boolQueryBuilder).size(10000); // size 크게 지정