【发布时间】:2017-10-27 21:17:29
【问题描述】:
我有 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”开始,每隔 7 天到达“2017-07-27T00:00:00.000Z”。 我错过了什么?谢谢!
更新 1
我会尝试多种查询变体。不同的时区、范围、禁用扩展边界、间隔多个 7 天。它仅适用于 1-3d 间隔。
更新 2 我试过 7.x。似乎在最新版本上运行良好。
【问题讨论】:
-
如果您删除
extended_bounds会发生什么? -
@val, "from": "2016-09-28", "to":"2017-10-28", extended_bounds 已删除。无论如何,第一个桶从“key_as_string”开始:“2016-09-29T00:00:00.000Z”,不考虑第一个命中 2016-10-01
-
似乎最近的星期四作为第一个存储桶日期:)
-
如果使用 dateExecute 而不是 doc.dateExecute 会发生什么?
-
@deathyr,dateExecute 是嵌套文档的嵌套字段。反正我会试试的。 7d case 没有任何变化,但其他测试失败。
标签: database search elasticsearch aggregate