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);
            }
        }
    }

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐