Elasticsearch Date直方图存储桶从错误的日期开始 [英] Elasticsearch Date Histogram buckets starts from wrong date

查看:60
本文介绍了Elasticsearch Date直方图存储桶从错误的日期开始的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有ElasticSearch分析查询.它必须按7d个存储桶汇总总和.我也使用扩展范围.但是结果存储桶从错误的日期开始.Elastic 5.2.2版本.我在做什么错了?

I have ElasticSearch analytic query. It must aggregate sum by 7d buckets. Also I've use extended bounds. But result buckets starts from wrong date. Elastic 5.2.2 version. What I'm doing wrong?

{
  "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".我想念的是什么?谢谢!

But buckets starts from "2017-07-06T00:00:00.000Z" and goes by 7d intervals to "2017-07-27T00:00:00.000Z". What I'm missing? Thanks!

更新1

我会尝试许多查询变体.不同的时区,范围,禁用extendeded_bounds,间隔为7天.仅在1-3d的间隔内有效.

I'd try a many variants of query. Different timezones, ranges, disabling exteneded_bounds, intervals multiple 7 day. It's works good only for 1-3d intervals.

更新2 我已经尝试过7.x.似乎可以在最新版本上正常工作.

Update 2 I have tried 7.x. Seems to work fine on latest versions.

推荐答案

好吧,在弹性论坛上进行一些对话并注册一个错误之后:

Ok, after some conversation on elastic forum and register a bug:

1)在ES中使用DateHistogram和ExtendedBounds是棘手的(至少5.2)DateHistogram从UnixEpoch 1970-01-01开始存储桶,因此,如果您使用天间隔(例如7d或3d等),但需要从左边界开始存储桶-您需要为左边界日期设置偏移量(以ms为单位).2)但是我们在5.2.2版本上仍然存在一些错误.以7d的间隔,我们在周四有明确的第一个存储桶(1970年1月1日为周四).所有其他带有适当偏移量的铲斗.

1) Working with DateHistogram and ExtendedBounds is tricky in ES (5.2 at least) DateHistogram starts buckets from UnixEpoch 1970-01-01 so if you use days intervals (like 7d or 3d etc) but need to start bucket from the left bound - you need to set offset for on date of left border (in ms). 2) But we still have some bug on 5.2.2 version. With 7d intervals we have explicit first bucket on Thu (01-01-1970 is Thu). All other buckets with proper offset.

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

Lack of documentation and a lot of strange behavior :(

这篇关于Elasticsearch Date直方图存储桶从错误的日期开始的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆