环境es5
1.根据原数据字段分组后进行排序: service_duration_agg = AggregationBuilders.terms("serviceAgg").field(ESConstUtil.METHOD).order(Terms.Order.count(false)).size(3); Terms.Order.count(false):表示根据这个字段的count进行排序,true正序,false倒叙。 size:排序后取top几 2.嵌套聚合后进行排序 根据subAggregation里面计算后的字段进行排序(avgDuration) AggregationBuilder duration_agg = AggregationBuilders.avg("avgDuration").field(ESConstUtil.DURATION); service_duration_agg = AggregationBuilders.terms("serviceAgg").field(ESConstUtil.METHOD).subAggregation(duration_agg) .order(Terms.Order.aggregation("avgDuration",false)).size(3); Terms.Order.aggregation("avgDuration",false):根据avgDuration的计算后的value值进行排序而不再根据doc_count进行排序。