对于平时的group by 我们都知道使用 AggregationBuilder 可以解决
AggregationBuilder aggregationBuilder =
AggregationBuilders.terms("nameAgg").field("name.keyword").size(Integer.MAX_VALUE) //1
.subAggregation(AggregationBuilders.terms("jobAgg").field("job.keyword").size(Integer.MAX_VALUE) //2
.subAggregation(AggregationBuilders.avg("ageAgg").field("age")) //3
.subAggregation(AggregationBuilders.count("totalNum").field("name.keyword"))); //4
searchSourceBuilder.aggregation(aggregationBuilder);
以上代码的解释如下
(1) 首先按照name分组,terms括号里面是聚合名字,随便起,field为聚合的字段名;之所以加了.keyword是因为不加聚合的时候会报fielddata属性没有设置为true;
{
"error": {
"root_cause": [{
"type": "illegal_argument_excep