我有ElasticSearch解析查询。它必须按7d个存储桶汇总总和。
我也使用扩展范围。
但是结果存储桶从错误的日期开始。
Elastic 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
我会尝试查询的许多变体。不同的时区,范围,禁用extendeded_bounds,间隔为7天。仅在1-3d的间隔内有效。
最佳答案
好的,在 flex 论坛上进行一些对话并注册一个错误之后:
1)在ES中使用DateHistogram和ExtendedBounds是棘手的(至少5.2)
DateHistogram从UnixEpoch 1970-01-01开始存储桶,因此,如果您使用天间隔(例如7d或3d等),但需要从左边界开始存储桶-您需要为左边界日期设置偏移量(以ms为单位)。
2)但是我们在5.2.2版本上仍然存在一些错误。以7d的间隔,我们在周四有明确的第一个存储桶(1970年1月1日是周四)。所有其他带有适当偏移量的铲斗。
缺少文档和许多奇怪的行为:(
关于database - Elasticsearch Date直方图存储桶从错误的日期开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44210714/