public void test02() throws IOException {
//设置要查询的索引
SearchRequest request = new SearchRequest().indices("test01");
//构建搜索
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
//添加搜索长度
sourceBuilder.from(0);
sourceBuilder.size(0);
List<String> data = Arrays.asList("","");
TermsQueryBuilder dataQuery = QueryBuilders.termsQuery("sip", data);
sourceBuilder.query(dataQuery);
//设置分组的名称,以及要进行分组的字段,以及最终获取的10条(top10)。
TermsAggregationBuilder group = AggregationBuilders.terms("group").field("login_email.keyword").size(10);
//添加子聚合,sum聚合名称为count_sum,字段为count group.subAggregation(AggregationBuilders.sum("count_sum").field("count"));
//指定全部聚合完成后的排序规则,用子聚合的值进行排序,false为降序,true为升序。
group.order(BucketOrder.aggregation("count_sum",false));
//添加聚合
sourceBuilder.aggregation(group);
request.source(sourceBuilder);
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
Aggregations aggregations = response.getAggregations();
Iterator<Aggregation> iterator = aggregations.iterator();
while (iterator.hasNext()){
Terms agg = (Terms)iterator.next();
for (Terms.Bucket bucket : agg.getBuckets()) {
Sum sum = bucket.getAggregations().get("count_sum");
int count= (int) sum.getValue();
System.out.println(bucket.getKey()+":"+count);
}
}
}
es聚合查询之分组聚合,指定字段sum后,获取top10
最新推荐文章于 2024-07-10 14:32:28 发布