白话Elasticsearch33-深入聚合数据分析之案例实战bucket + metrics 统计每种颜色电视平均价格
文章目錄
- 概述
- 官方說明Avg Aggregation
- 案例:統計每種顏色電視平均價格
概述
繼續跟中華石杉老師學習ES,第33篇
課程地址: https://www.roncoo.com/view/55
先回顧一下,白話Elasticsearch32-深入聚合數據分析之案例實戰Terms Aggregation 中演示了Terms Aggregation ,其實就是分組操作 ,根據某個字段將數據分到不同的bucket中,DSL及返回結果如下
按照color去分bucket,可以拿到每個color bucket中的數量,這個僅僅只是一個bucket操作,返回結果中 包含key 和 doc_count 。 doc_count可以理解為es的bucket操作默認執行的一個內置metric(其實不是)。
這里我們將學習下除了bucket操作(分組),還要對每個bucket執行一個metric聚合統計操作
官方說明Avg Aggregation
官方說明: Avg Aggregation
更多說明請參考官網
案例:統計每種顏色電視平均價格
原始數據:
思路:
-
先按照顏色進行bucket分組操作
-
再對每個bucket執行一個metric聚合統計操作
先按照顏色進行bucket分組
GET /tvs/sales/_search {"size": 0 ,"aggs": {"group_by_color": {"terms": {"field": "color"}}} }緊接著: 在一個aggs執行的bucket操作(terms),平級的json結構下,再加一個aggs,這個第二個aggs內部,同樣取個名字,執行一個metric操作,avg,對之前的每個bucket中的數據的指定的field,price field,求一個平均值
全部的DSL如下:
GET /tvs/sales/_search {"size": 0 ,"aggs": {"group_by_color": {"terms": {"field": "color"},"aggs":{"avg_price":{"avg": {"field": "price"}}}}} }請求DSL 分析下:
"aggs": { "avg_price": { "avg": {"field": "price" }} }就是一個metric,就是一個對一個bucket分組操作之后,對每個bucket都要執行的一個metric
返回結果分析下:
- buckets: key (分組關鍵字)和doc_count (數量)
- avg_price:我們自己取的metric aggs的名字
- value:我們的metric計算的結果,每個bucket中的數據的price字段求平均值后的結果
類比下我們常用的SQL:
select avg(price) from tvs.sales group by color總結
以上是生活随笔為你收集整理的白话Elasticsearch33-深入聚合数据分析之案例实战bucket + metrics 统计每种颜色电视平均价格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白话Elasticsearch32-深入
- 下一篇: 白话Elasticsearch34-深入