Timezone of now in elasticsearch

now is always resolved to unix timestamp in millisecond. So one would need to either store the dates in UTC or speicify the timezone parameter in the range query.

From the documentation :

Dates can be converted from another timezone to UTC either by specifying the time zone in the date value itself (if the format accepts it), or it can be specified as the time_zone parameter:

now is not affected by the time_zone parameter (dates must be stored as UTC).


now by itself will query based on UTC. So querying documents from midnight UTC to now would look like:

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

If you want to query documents in timezone other than UTC, you can use the time_zone parameter to the range queries like this:

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