Elasticsearch日期直方图存储桶从错误的日期开始

时间:2017-05-26 22:05:37

标签: database search elasticsearch aggregate

我有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间隔。

1 个答案:

答案 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)上有明确的第一个桶。所有其他桶都有适当的偏移量。

缺乏文档和许多奇怪的行为:(