Logstash преобразует "гггг-ММ-дд" в "гггг-ММ-дд'ТХХ: мм: сс.СССЗ"

Я использую плагин logstash-input-jdbc для синхронизации моих данных из mysql в elasiticsearch. Однако, когда я посмотрел на данные в asticsearch, я обнаружил, что формат полей всех типов дат изменился с "гггг-ММ-дд" на "гггг-ММ-дд'Т'ХХ: мм: сс.СССЗ".У меня около 200 полей с типом даты, поэтому я хочу знать, как настроить logstash, чтобы он мог выводить формат "гггг-ММ-дд" вместо "гггг-ММ-дд'Т'ХХ: мм: сс".SSSZ".

1 ответ

Elasticsearch хранит даты как метки времени UTC:

Внутренне даты преобразуются в UTC (если указан часовой пояс) и сохраняются в виде длинного числа, представляющего миллисекунды с начала эпохи.

Запросы по датам внутренне преобразуются в запросы диапазона в этом длинном представлении, а результат агрегации и сохраненных полей преобразуется обратно в строку в зависимости от формата даты, связанного с полем.

Поэтому, если вы хотите сохранить формат yyyy-MM-dd, вам нужно будет сохранить его как keyword (который вы тогда не сможете выполнять в диапазоне запросов).

Вы можете изменить отображение Kibana, чтобы оно отображало только формат гггг-ММ-дд, но учтите, что оно преобразует дату в часовой пояс зрителя, что может привести к тому, что день будет отличаться от того, который вы указали в поле ввода.

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

Другие вопросы по тегам