5

Я собираю документы, каждый из которых имеет временную метку. Временная метка - это UTC, но в каждом документе также есть местный часовой пояс ("timezone": "America/Los_Angeles"), который может быть различным в разных документах.Динамическое смещение часового пояса в агрегации elasticsearch?

Я пытаюсь сделать date_histogram aggregation на основе местного времени, а не UTC или фиксированного часового пояса (например, используя опцию "time_zone": "America/Los_Angeles").

Каким образом можно преобразовать часовой пояс для каждого документа в локальное время до агрегации?

Вот простое агрегирование:

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

Вы когда-нибудь находили решение для этого? Я знаю, что это старо, но я нахожусь в том же положении и полагаю, что проверю, прежде чем публиковать другой дублирующий вопрос. –

ответ

0

Я не уверен, если я полностью понимаю, но мне кажется, как time_zone property бы для этого:

Значение зоны принимает либо числовое значение для смещения часов, например: «time_zone»: -2. Он также принимает формат часов и минут, например «time_zone»: «-02: 30». Другим вариантом является предоставление часового пояса, принятого в качестве одного из значений, перечисленных здесь.

0

Если вы сохраняете другое поле, местное время без информации о часовом поясе, оно должно работать.

Подберите каждую отметку времени (которая находится в UTC), преобразуйте ее в дату в локальном часовом поясе (это будет содержать информацию о часовом поясе). Теперь просто отбросьте информацию о часовом поясе из этого дня и времени. Теперь вы можете выполнять действия в этом новом поле.

Предположим, вы начинаете с этого времени в формате UTC: '2016-07-17T01: 33: 52.412Z'

Теперь предположим, что вы в PDT вы можете преобразовать его в: «2016-07- 16T18: 33: 52.412-07: 00'

Теперь, рубить с конца, так что вы в конечном итоге с: '2016-07-16T18: 33: 52.412Z'

Теперь вы можете работать на этом поле ,