白话Elasticsearch42-深入聚合数据分析之案例实战__bucket filter:统计牌品最近一个月的平均价格(Filter Aggregation)
生活随笔
收集整理的這篇文章主要介紹了
白话Elasticsearch42-深入聚合数据分析之案例实战__bucket filter:统计牌品最近一个月的平均价格(Filter Aggregation)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 概述
- 官方說明
- 案例
概述
繼續跟中華石杉老師學習ES,第41篇
課程地址: https://www.roncoo.com/view/55
官方說明
Filter Aggregation:戳這里
案例
需求: 統計牌品最近一個月的平均價格
今天是 2019-08-24 ,為了演示該案例,我們批量更新下數據
POST /tvs/sales/_bulk {"update":{"_id":"3n0msmwBYSg4rD-7WPab"}} {"doc":{"sold_date":"2019-07-30"}} {"update":{"_id":"4H0msmwBYSg4rD-7WPab"}} {"doc":{"sold_date":"2019-01-05"}} {"update":{"_id":"4n0msmwBYSg4rD-7WPab"}} {"doc":{"sold_date":"2019-04-12"}} {"update":{"_id":"230msmwBYSg4rD-7WPaa"}} {"doc":{"sold_date":"2019-03-28"}} {"update":{"_id":"3X0msmwBYSg4rD-7WPab"}} {"doc":{"sold_date":"2019-05-20"}} {"update":{"_id":"3H0msmwBYSg4rD-7WPab"}} {"doc":{"sold_date":"2019-06-05"}} {"update":{"_id":"330msmwBYSg4rD-7WPab"}} {"doc":{"sold_date":"2019-08-02"}} {"update":{"_id":"4X0msmwBYSg4rD-7WPab"}} {"doc":{"sold_date":"2019-07-30"}}更新后的數據:
DSL:
#統計牌品最近一個月的平均價格 GET /tvs/sales/_search {"query": {"term": {"brand": "TCL"}},"aggs": {"recent_30d": {"filter": {"range": {"sold_date": {"gte": "now-30d"}}},"aggs": {"recent_30d_price": {"avg": {"field": "price"}}}}}, "size": 0 }返回
分析一下:
aggs.filter,針對的是聚合。
為什么不把filter放在query里呢? 如果放query里面的filter,是全局的,會對所有的數據都有影響 。
但是假設你要統計TCL電視,最近1個月的平均值; 最近3個月的平均值; 最近6個月的平均值
那就需要對bucket 進行 filter:對不同的bucket下的aggs,進行filter
#統計牌品最近一個月的平均價格 GET /tvs/sales/_search {"query": {"term": {"brand": "TCL"}},"aggs": {"recent_30d": {"filter": {"range": {"sold_date": {"gte": "now-30d"}}},"aggs": {"recent_30d_price": {"avg": {"field": "price"}}}},"recent_90d":{"filter": {"range": {"sold_date": {"gte": "now-90d"}}},"aggs": {"recent_90d_price": {"avg": {"field": "price"}}}},"recent_180d":{"filter": {"range": {"sold_date": {"gte": "now-180d"}}},"aggs": {"recent_180d_price": {"avg": {"field": "price"}}}}} }返回:
{"took": 12,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 0.9808292,"hits": [{"_index": "tvs","_type": "sales","_id": "330msmwBYSg4rD-7WPab","_score": 0.9808292,"_source": {"price": 1200,"color": "綠色","brand": "TCL","sold_date": "2019-08-02"}},{"_index": "tvs","_type": "sales","_id": "3n0msmwBYSg4rD-7WPab","_score": 0.6931472,"_source": {"price": 1500,"color": "藍色","brand": "TCL","sold_date": "2019-07-30"}}]},"aggregations": {"recent_30d": {"doc_count": 2,"recent_30d_price": {"value": 1350}},"recent_90d": {"doc_count": 2,"recent_90d_price": {"value": 1350}},"recent_180d": {"doc_count": 2,"recent_180d_price": {"value": 1350}}} }總結
以上是生活随笔為你收集整理的白话Elasticsearch42-深入聚合数据分析之案例实战__bucket filter:统计牌品最近一个月的平均价格(Filter Aggregation)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 白话Elasticsearch41-深入
- 下一篇: 白话Elasticsearch43-深入