我的文檔的結構是這樣的:Elasticsearch日期範圍聚集在多個領域
{
"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元素,其中日期< date_to_count和valid_until> = 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」將用於「到」。
我已經嘗試了幾個其他的想法與腳本,但無法找到一種有效的方式來做到這一點:/。
我想我也可以解決這個問題,如果在腳本中,我可以訪問當前值/值,但是我再次嘗試過「ctx.to」,「context.to」 ,但這些變量是未定義的。
謝謝!