弹性搜索聚合中的动态时区偏移?

时间:2014-08-30 02:04:41

标签: elasticsearch timezone elasticsearch-aggregation date-histogram

我汇总了每个都有时间戳的文档。时间戳是UTC,但每个文档也有一个本地时区("timezone": "America/Los_Angeles"),它们可以在不同文档之间。

我尝试根据当地时间而不是UTC或固定时区(例如,使用选项date_histogram aggregation)来"time_zone": "America/Los_Angeles"

如何在汇总前将每个文档的时区转换为当地时间?

这是简单的聚合:

{
  "aggs": {
    "date": {
      "date_histogram": {
        "field": "created_timestamp",
        "interval": "day"
      }
    }
  }
}

2 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解它,但似乎time_zone property就是这样:

  

区域值接受小时偏移的数值,例如:“time_zone”: - 2。它还接受小时和分钟的格式,例如“time_zone”:“ - 02:30”。另一个选择是提供一个时区作为此处列出的值之一接受。

答案 1 :(得分:0)

如果您存储的是没有时区信息的当地时间的其他字段,则应该有效。

获取您拥有的每个时间戳(以UTC为单位),将其转换为本地时区的日期(这将包含时区信息)。现在只需从此日期时间中删除时区信息。现在,您可以对此新字段执行操作。

假设您从UTC时间开始: ' 2016-07-17T01:33:52.412Z'

现在,假设您已经在PDT中将其转换为: ' 2016-07-16T18:33:52.412-07:00'

现在,破解结束,所以你最终得到: ' 2016-07-16T18:33:52.412Z'

现在您可以在此字段上操作。