弹性搜索中的时区

时间:2016-08-09 16:06:16

标签: elasticsearch timezone

我现在使用时弹性搜索的时区是什么?

{
   "range": {
      "myDateInSomeTimezone": {
         "gt": "now"
      }
   }
},

我想知道现在的时区是什么时候:

  • 是否使用我的服务器本地时区?
  • 与该字段的时区相同?
  • 是UTC时区吗?

2 个答案:

答案 0 :(得分:3)

now本身将基于UTC查询。因此,从UTC午夜到现在查询文档的过程看起来像是:

         "range" =>  {
            "myDateInSomeTimezone" =>  {
              "gte" =>  "now/d",
              "lte" =>  "now"
            }
          }

如果要查询UTC以外的时区的文档,可以使用time_zone参数来进行范围查询,如下所示:

         "range" =>  {
            "myDateInSomeTimezone" =>  {
              "gte" =>  "now/d",
              "lte" =>  "now",
              "time_zone" =>  "America/Los_Angeles"
            }
          }

答案 1 :(得分:2)

now始终以毫秒为单位解析为unix timestamp。  因此,需要以UTC格式存储日期或在范围查询中指定时区参数。

来自documentation

  

日期可以从另一个时区转换为UTC   在日期值本身中指定时区(如果格式   接受它),或者可以将其指定为time_zone参数:

     

现在不受time_zone参数的影响(必须存储日期   作为UTC)。