概述
继续跟中华石杉老师学习ES,第40篇
课程地址: https://www.roncoo.com/view/55
Global Aggregation
官方说明 : 戳这里
案例
需求: 统计单个品牌与所有品牌平均价格对比
原始数据:
GET /tvs/sales/_search { "query": { "term": { "brand": "长虹" } }, "aggs": { "single_brand_avg_price": { "avg": { "field": "price" } }, "all": { "global": {}, "aggs": { "all_brand_avg_price": { "avg": { "field": "price" } } } } }, "size": 0 }
global:就是global bucket,即将所有数据纳入聚合的scope,而不管之前的query查询出来的数据。
返回:
{ "took": 1, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 3, "max_score": 0, "hits": [] }, "aggregations": { "all": { "doc_count": 8, "all_brand_avg_price": { "value": 2650 } }, "single_brand_avg_price": { "value": 1666.6666666666667 } } }
分析下返回结果:
出来了两个结果,一个结果是基于query搜索结果来聚合的; 一个结果是对所有数据执行聚合后的
- single_brand_avg_price:就是针对query搜索结果,执行的,拿到的,就是长虹品牌的平均价格
- all.all_brand_avg_price:所有品牌的平均价格