一、使用环境
jdk:1.8
es:7.15.2
背景:实现类似select count(*),name,age from table_name group by name,age功能
二、查询代码:
使用Terms聚合查询,示例代码如下:
public static Map<String,Map<String,Long>> groupByFields(String index, QueryBuilder query, String... fieldNames) throws IOException {
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
TermsAggregationBuilder aggregationBuilder=null;
for(String fieldName: fieldNames) {
if(aggregationBuilder == null) {
aggregationBuilder = AggregationBuilders.terms(fieldName)
.field(fieldName);
}else {
aggregationBuilder.subAggregation(AggregationBuilders.terms(fieldName)