Elasticsearch日期范围聚合和时区

时间:2015-06-29 16:07:48

标签: date elasticsearch timezone aggregation

我尝试构建日期范围聚合,但我有一个问题是添加时区。 搜索文档中的时间戳如下所示:" 2015-06-29T00:00:00.000 + 02:00"。这是与德国时区的瑜伽时间。

日期直方图聚合和日期范围过滤器具有时区设置:

例如:

"range" : {
   "valid_to" : {
      "from" : "now/d",
      "to" : "now/d+1d",
      "time_zone" : "+02:00"
   }
}

但我在日期范围聚合中找不到类似的东西:

"valid_to" : {
      "date_range" : {
        "field" : "valid_to",
        "ranges" : [ {
          "key" : "today",
          "from" : "now/d",
          "to" : "now/d+1d"
        }, {
          "key" : "week",
          "from" : "now/d",
          "to" : "now/d+6d"
        }, 
        ... ]
      }
    }

有没有人知道将时区添加到日期范围聚合的解决方案而不是手动执行? (例如,减去时区偏移量)

2 个答案:

答案 0 :(得分:2)

目前没有选项在日期范围聚合中提供时区。 解决方法是显式指定偏移量。有一个open issue关于你应该在那里发出同样的声音。

答案 1 :(得分:1)

对于所有遇到相同问题的人,我使用缺少time_zone参数的解决方法。目前,我不使用日期范围聚合。相反,我使用过滤器聚合。

我的解决方案如下:

"valid_to": {
    "filters": {
        "filters": {
            "today": {
                "range": {
                    "valid_to": {
                        "from": "now/d",
                        "to": "now/d",
                        "time_zone": "+02:00",
                        "include_lower": true,
                        "include_upper": true
                    }
                }
            },
            "week": {
                "range": {
                    "valid_to": {
                        "from": "now/d",
                        "to": "now/d+6d",
                        "time_zone": "+02:00",
                        "include_lower": true,
                        "include_upper": true
                    }
                }
            }
        }
    }
}