//求和 按照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);
}
}
elasticsearch 6.2.4 版本 分组查询数据,java api
最新推荐文章于 2024-08-21 02:05:41 发布