2016-10-20 2 views
0

У меня есть поле даты в документе Elasticsearch. Я собираюсь на этом поле.Получить время с поправкой на часовой пояс

Это мой запрос

GET _search 
{ 
    "size": 0, 
    "aggregations": { 
    "timeslice": { 
    "histogram": { 
     "script": "doc['ad_inTime'].date.getHourOfDay()", 
     "interval": 1, 
     "min_doc_count": 0, 
     "extended_bounds": { 
      "min": 0, 
      "max": 23 
     }, 
     "order": { 
      "_key": "desc" 
     }, 
     "offset":0 
    } 
    } 
} 
} 

Теперь я хочу передать информацию о временных зонах (смещение или часовой пояс имя-в зависимости от того работает) в этой строке:

"script": "doc['ad_inTime'].date.getHourOfDay()", 

и получить дату доводила до часового пояса Есть ли способ сделать это?

ответ

1

Вы можете передать часовой пояс в качестве параметра в сценарий, как это:

{ 
    "size": 0, 
    "aggregations": { 
    "timeslice": { 
     "histogram": { 
     "script": { 
      "inline": "doc['openDate'].date.setZone(DateTimeZone.forID(tz)); doc['openDate'].date.getHourOfDay()", 
      "params": { 
      "tz": "Europe/London" 
      } 
     }, 
     "interval": 1, 
     "min_doc_count": 0, 
     "extended_bounds": { 
      "min": 0, 
      "max": 23 
     }, 
     "order": { 
      "_key": "desc" 
     }, 
     "offset": 0 
     } 
    } 
    } 
} 
+0

Спасибо человеку, это worked.This весь сценарий, что сбивает с толку me.Can вы предлагаете некоторые интернет-ресурсы, где я могу прочитать больше? –

+1

https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-scripting.html – Val

Смежные вопросы