elasticsearch 6.2.4 版本 分组查询数据,java api

//求和 按照citycode 分组之后求和
                SearchRequest searchRequest = new SearchRequest(anaIndex);
                searchRequest.types(anaType);
                SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
                searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
                startFieldData(aggParam, anaIndex, anaType);
                BoolQueryBuilder boolQueryBuilder=conditionParam(search_EqualAnd, search_LessThanAnd, search_GreatThanAnd, search_UnequalAnd, search_LikeAnd, search_EqualOr, search_LessThanOr, search_GreatThanOr, search_UnequalOr, search_LikeOr);
                searchSourceBuilder.query(boolQueryBuilder);
                searchSourceBuilder.aggregation(AggregationBuilders.global("agg").subAggregation(AggregationBuilders.terms(aggParam).size(10000).field(aggParam))).size(10000);//.subAggregation(AggregationBuilders.terms(anaParam).field(anaParam))
//                searchSourceBuilder.size(0);
                searchRequest.source(searchSourceBuilder);
                SearchResponse response = null;
                response = restHighClient.search(searchRequest);
                Global agg = response.getAggregations().get("agg");
                Terms groupBySumAgg = agg.getAggregations().get(aggParam);
                List<Terms.Bucket> groupBySumColl = (List<Bucket>) groupBySumAgg.getBuckets();
//                Sum sumAggregation = response.getAggregations().get(anaParam);
                logger.info("均等化聚合查询参数["+aggParam+"],共分["+groupBySumColl.size()+"]组");
                long countTotal=0;
                for (Terms.Bucket bucket : groupBySumColl) {
                    Map<String, Object> map1=new HashMap<>();
                    String buck=String.valueOf(bucket.getKey());
                    String region = "";
                    region=buck;
                    logger.info("bucket值["+region+"],分组值["+bucket.getDocCount()+"]");
                    if(smap.containsKey(region)){
                        countTotal += bucket.getDocCount();
                        map1.put("regionCode", region);
                        map1.put("address", smap.get(region).toString());
                        map1.put("total", bucket.getDocCount());
                        result.add(map1);
                    }
                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值