Elasticsearch聚合如何计算每个桶日期与所属组最小日期的差值
解决方案
你可以通过bucket_script管道聚合的相对路径引用父层级聚合值,配合内置变量_key获取当前桶时间戳实现需求,修改后的聚合语句如下:
"id": { "terms": { "field": "data.id" }, "aggs": { "min_date": { "min": { "field": "data.dateSold" } }, "date": { "date_histogram": { "field": "data.dateSold", "calendar_interval": "year" }, "aggs": { "sales": { "sum": { "field": "data.sales" } }, "difference_with_min_date": { "bucket_script": { "buckets_path": { "min_date": "../min_date" }, "script": "return _key - params.min_date" } } } } } }
关键说明
../min_date是聚合路径的相对寻址写法,代表向上回溯一级到terms分组的聚合层级,获取对应分组的最小日期值_key是管道聚合的内置变量,可直接读取当前date_histogram桶的时间戳key- 计算结果默认单位为毫秒,和你预期的输出格式完全一致
内容的提问来源于stack exchange,提问作者Ashley Kelham
相关产品推荐
相关产品推荐

