RestHighLevelClient 实现 select count from table group by filed

String id = null;
try {SearchRequest request = new SearchRequest(IndexAndTypeConstant.PROPERTY_SQL);
            request.types(IndexAndTypeConstant.PROPERTY_SQL_TYPE);

            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
            searchSourceBuilder.size(0);
            request.source(searchSourceBuilder);

            TermsAggregationBuilder aggregationBuilder = AggregationBuilders.terms("estateIdAgg").field(PropertyIndexMappingConstant.ESTATE_ID);
            aggregationBuilder.order(BucketOrder.count(false));
            aggregationBuilder.size(Integer.MAX_VALUE);//todo
            searchSourceBuilder.aggregation(aggregationBuilder);
            SearchResponse searchResponse = client.search(request);
            Map<String, Aggregation> aggMap = searchResponse.getAggregations().getAsMap();
            ParsedStringTerms gradeTerms = (ParsedStringTerms) aggMap.get("estateIdAgg");
            List list = gradeTerms.getBuckets();
            for (Object object : list) {
                ParsedStringTerms.ParsedBucket obj = (ParsedStringTerms.ParsedBucket) object;
                String key = obj.getKeyAsString();
                long count = obj.getDocCount();
                id = key;
                UpdateRequest updateRequest = new UpdateRequest(IndexAndTypeConstant.SEARCH_INDEX,
                        IndexAndTypeConstant.SEARCH_TYPE, key)
                        .doc(jsonBuilder()
                                .startObject()
                                .field("count", count)
                                .endObject());
                client.update(updateRequest);
            }
        } catch (Exception e) {
           System.err.println("本条数据插入失败 id: " + id);
        }
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值