我有ElasticSearch分析查询。它必须通过7d桶汇总和。 我也使用扩展边界。 但结果桶从错误的日期开始。 弹性5.2.2版本。 我做错了什么?
{
"size": 0,
"query": {
"bool": {
"must": [
{
"range": {
"doc.dateExecute": {
"from": "2017-07-11",
"to": "2017-07-31",
"include_lower": true,
"include_upper": true,
"boost": 1.0
}
}
}
],
"disable_coord": false,
"adjust_pure_negative": true,
"boost": 1.0,
"_name": "onDates"
}
},
"aggregations": {
"time": {
"date_histogram": {
"field": "doc.dateExecute",
"interval": "7d",
"offset": 0,
"order": {
"_key": "asc"
},
"keyed": false,
"min_doc_count": 0,
"extended_bounds": {
"min": "2017-07-11",
"max": "2017-07-31"
}
},
"aggregations": {
"incomingAmount": {
"sum": {
"field": "doc.incomingAmount"
}
},
"outgoingAmount": {
"sum": {
"field": "doc.outgoingAmount"
}
}
}
}
}
}
但水桶始于" 2017-07-06T00:00:00.000Z"并且以7d的间隔进入" 2017-07-27T00:00:00.000Z"。 我错过了什么?谢谢!
更新1
我尝试了很多查询变体。不同的时区,范围,禁用exteneded_bounds,间隔7天。它仅适用于1-3d间隔。
答案 0 :(得分:0)
好的,在弹性论坛上进行了一些对话并注册了一个错误:
1)在ES中使用DateHistogram和ExtendedBounds很棘手(至少5.2) DateHistogram从UnixEpoch 1970-01-01开始存储桶,所以如果你使用天间隔(如7d或3d等)但需要从左边界开始存储桶 - 你需要设置左边界日期的偏移量(以ms为单位)。 2)但我们仍然在5.2.2版本上有一些错误。在7d的时间间隔内,我们在Thu(01-01-1970是Thu)上有明确的第一个桶。所有其他桶都有适当的偏移量。
缺乏文档和许多奇怪的行为:(