【发布时间】:2014-12-29 04:05:11
【问题描述】:
我的文档结构如下:
{
"element": "A",
"date": "2014-01-01",
"valid_until": "2014-02-01"
},
{
"element": "A",
"date": "2014-02-01",
"valid_until": "9999-12-31"
}
日期“9999-12-31”在这里说:“它还没有过期”。总是有这样的范围,所以对于给定的元素“A”,date > valid_until 永远不会重叠。因此,我可以通过使用如下伪代码来计算我拥有多少元素:COUNT elements WHERE date = date_to_count
其中“date_to_count”是我要计算值的日期。由于我想在几个时间点计算它,我可以使用日期直方图或日期范围聚合。但是,日期范围似乎只适用于一种字段。理想情况下,我希望能够做到这一点:
"aggs": {
"foo": {
"date_range": {
"fields": ["date", "valid_until"],
"ranges": [
{"from": "2014-01-01", "to": {"2014-02-01"}},
{"from": "2014-02-01", "to": {"2014-03-01"}},
{"from": "2014-03-01", "to": {"2014-04-01"}}
]
}
}
}
“日期”将用于“来自”,“valid_until”将用于“到”。
我用脚本尝试了其他几个想法,但找不到有效的方法:/。
如果在脚本中我可以访问当前的 from/to 值,我想我也可以解决这个问题,但是我再次尝试了诸如“ctx.to”、“context.to”之类的东西,但这些变量是未定义的。
谢谢!
【问题讨论】:
标签: date elasticsearch