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