es聚合查询之分组聚合,指定字段sum后,获取top10

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

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值