java查es多分组聚合:

SearchRequestBuilder requestBuilderOfLastMonth = transportClient.prepareSearch(TYPE_NAME + "_" + date + "*").setTypes(TYPE_NAME);
TermsAggregationBuilder groupByLastMonthWeek = AggregationBuilders.terms("groupByWeek").field("week")
.subAggregation(AggregationBuilders.terms("groupByHour").field("hour")
.subAggregation(AggregationBuilders.sum("sumDown").field("downOutput")))
.size(100);

requestBuilderOfLastMonth.setQuery(boolQueryBuilder).addAggregation(groupByLastMonthWeek);
SearchResponse responseOfLastMonth = requestBuilderOfLastMonth.get();

Terms termsfOfLastMonth = responseOfLastMonth.getAggregations().get("groupByWeek");
for (Terms.Bucket entry : termsfOfLastMonth.getBuckets()) {
String oneWeek = entry.getKey().toString();
Terms groupByHour = entry.getAggregations().get("groupByHour");
for (Terms.Bucket entry2 : groupByHour.getBuckets()) {
Map<String, Object> kvMap = new HashMap<>();
String hour = entry2.getKey().toString();
Sum downSum = entry2.getAggregations().get("sumDown");
double sumValue = downSum.getValue();
kvMap.put(hour, sumValue);
lastMonthWeekMap.put(oneWeek, kvMap);
}
}
查询的核心代码,client是TransportClient

版权声明:本文为shuaidong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/shuaidong/p/13921171.html