44深入聚合数据分析_bucket filter:统计牌品最近一个月的平均价格

在聚合中进行过滤

查询品牌是长虹的电视,并且过滤售卖日期在150天内,然后统计平均价格,再过滤售卖日期在140天内,然后统计平均价格,再过滤售卖日期在130天内,然后统计平均价格.

GET /tvs/sales/_search 
{"size": 0,"query": {"term": {"brand": {"value": "长虹"}}},"aggs": {"recent_150d": {"filter": {"range": {"sold_date": {"gte": "now-150d"}}},"aggs": {"recent_150d_avg_price": {"avg": {"field": "price"}}}},"recent_140d": {"filter": {"range": {"sold_date": {"gte": "2017-03-19-140d"}}},"aggs": {"recent_140d_avg_price": {"avg": {"field": "price"}}}},"recent_130d": {"filter": {"range": {"sold_date": {"gte": "now-130d"}}},"aggs": {"recent_130d_avg_price": {"avg": {"field": "price"}}}}}
}

aggs.filter,针对的是聚合去做的

如果放query里面的filter,是全局的,会对所有的数据都有影响

但是比如说,你要统计,长虹电视,最近1个月的平均值; 最近3个月的平均值; 最近6个月的平均值

bucket filter:是对不同的bucket下的aggs,进行filter

GET tvs/sales/_search

响应结果

{"took": 0,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 8,"max_score": 1,"hits": [{"_index": "tvs","_type": "sales","_id": "AX1PKYdDl-iNu-QvdWYI","_score": 1,"_source": {"price": 1200,"color": "绿色","brand": "TCL","sold_date": "2016-08-19"}},{"_index": "tvs","_type": "sales","_id": "AX1PKYdDl-iNu-QvdWYK","_score": 1,"_source": {"price": 8000,"color": "红色","brand": "三星","sold_date": "2017-01-01"}},{"_index": "tvs","_type": "sales","_id": "AX1PKYdDl-iNu-QvdWYE","_score": 1,"_source": {"price": 1000,"color": "红色","brand": "长虹","sold_date": "2016-10-28"}},{"_index": "tvs","_type": "sales","_id": "AX1PKYdDl-iNu-QvdWYF","_score": 1,"_source": {"price": 2000,"color": "红色","brand": "长虹","sold_date": "2016-11-05"}},{"_index": "tvs","_type": "sales","_id": "AX1PKYdDl-iNu-QvdWYG","_score": 1,"_source": {"price": 3000,"color": "绿色","brand": "小米","sold_date": "2016-05-18"}},{"_index": "tvs","_type": "sales","_id": "AX1PKYdDl-iNu-QvdWYJ","_score": 1,"_source": {"price": 2000,"color": "红色","brand": "长虹","sold_date": "2016-11-05"}},{"_index": "tvs","_type": "sales","_id": "AX1PKYdDl-iNu-QvdWYH","_score": 1,"_source": {"price": 1500,"color": "蓝色","brand": "TCL","sold_date": "2016-07-02"}},{"_index": "tvs","_type": "sales","_id": "AX1PKYdDl-iNu-QvdWYL","_score": 1,"_source": {"price": 2500,"color": "蓝色","brand": "小米","sold_date": "2017-02-12"}}]}
}

由于之前的数据都是2017年的数据,这里可以改为过滤售卖日期在指定日期的N天内

GET /tvs/sales/_search 
{"size": 0,"query": {"term": {"brand": {"value": "长虹"}}},"aggs": {"recent_150d": {"filter": {"range": {"sold_date": {"gte": "2017-03-19||-150d"}}},"aggs": {"recent_150d_avg_price": {"avg": {"field": "price"}}}},"recent_140d": {"filter": {"range": {"sold_date": {"gte": "2017-03-19||-140d"}}},"aggs": {"recent_140d_avg_price": {"avg": {"field": "price"}}}},"recent_130d": {"filter": {"range": {"sold_date": {"gte": "2017-03-19||-130d"}}},"aggs": {"recent_130d_avg_price": {"avg": {"field": "price"}}}}}
}

响应结果

{"took": 1,"timed_out": false,"_shards": {"total": 5,"successful": 5,"skipped": 0,"failed": 0},"hits": {"total": 3,"max_score": 0,"hits": []},"aggregations": {"recent_130d": {"doc_count": 0,"recent_130d_avg_price": {"value": null}},"recent_140d": {"doc_count": 2,"recent_140d_avg_price": {"value": 2000}},"recent_150d": {"doc_count": 3,"recent_150d_avg_price": {"value": 1666.6666666666667}}}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部