aggs.filter,针对的是聚合去做的(aggs 里面放filter)
如果放query里面的filter,是全局的,会对所有的数据都有影响
但是,如果,比如说,你要统计,长虹电视,最近1个月的平均值; 最近3个月的平均值; 最近6个月的平均值
bucket filter:对不同的bucket下的aggs,进行filter
搜索查询
GET /tvs/sales/_search { "size": 0, "query": { "term": { "brand": { "value": "长虹" } } }, "aggs": { "recent_2000d": { "filter":{ "range": { "sold_date": { "gte": "now-2000d" } } }, "aggs": { "recent_2000d_avg_price": { "avg": { "field": "price" } } } }, "recent_1500d": { "filter":{ "range": { "sold_date": { "gte": "now-1500d" } } }, "aggs": { "recent_1500d_avg_price": { "avg": { "field": "price" } } } }, "recent_850d": { "filter":{ "range": { "sold_date": { "gte": "now-850d" } } }, "aggs": { "recent_850d_avg_price": { "avg": { "field": "price" } } } } } } |
搜索结果
{ "took": 1, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 3, "max_score": 0, "hits": [] }, "aggregations": { "recent_1500d": { "doc_count": 3, "recent_1500d_avg_price": { "value": 1666.6666666666667 } }, "recent_2000d": { "doc_count": 3, "recent_2000d_avg_price": { "value": 1666.6666666666667 } }, "recent_850d": { "doc_count": 0, "recent_850d_avg_price": { "value": null } } } } |