【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
例如,我们要求获取每个品牌的用户评分的min、max、avg等值.
我们可以利用stats聚合:
GET /hotel/_search
{"size": 0, "aggs": {"brandAgg": { "terms": { "field": "brand", "size": 20},"aggs": { // 是brands聚合的子聚合,也就是分组后对每组分别计算"score_stats": { // 聚合名称"stats": { // 聚合类型,这里stats可以计算min、max、avg等"field": "score" // 聚合字段,这里是score}}}}}
}
试试
# 嵌套聚合metric
GET /hotel/_search
{"size": 0,"aggs": {"brandAgg": {"terms": {"field": "brand","size": 10},"aggs": {"scoreAgg": {"stats": {"field": "score"}}}}}
}
运行结果

效果很明显,在桶聚合的基础上,进行又一次聚合
如果我还想在此基础上,根据平均值排个序
# 嵌套聚合metric
GET /hotel/_search
{"size": 0,"aggs": {"brandAgg": {"terms": {"field": "brand","size": 10,"order": {"scoreAgg.avg": "desc"}},"aggs": {"scoreAgg": {"stats": {"field": "score"}}}}}
}
运行结果

OK, 可以看到“万丽” 品牌酒店的平均分最高
【记住三要素】
上一篇:RabbitMQ基本使用