Logstash преобразует "гггг-ММ-дд" в "гггг-ММ-дд'ТХХ: мм: сс.СССЗ"
Я использую плагин logstash-input-jdbc для синхронизации моих данных из mysql в elasiticsearch. Однако, когда я посмотрел на данные в asticsearch, я обнаружил, что формат полей всех типов дат изменился с "гггг-ММ-дд" на "гггг-ММ-дд'Т'ХХ: мм: сс.СССЗ".У меня около 200 полей с типом даты, поэтому я хочу знать, как настроить logstash, чтобы он мог выводить формат "гггг-ММ-дд" вместо "гггг-ММ-дд'Т'ХХ: мм: сс".SSSZ".
1 ответ
Elasticsearch хранит даты как метки времени UTC:
Внутренне даты преобразуются в UTC (если указан часовой пояс) и сохраняются в виде длинного числа, представляющего миллисекунды с начала эпохи.
Запросы по датам внутренне преобразуются в запросы диапазона в этом длинном представлении, а результат агрегации и сохраненных полей преобразуется обратно в строку в зависимости от формата даты, связанного с полем.
Поэтому, если вы хотите сохранить формат yyyy-MM-dd, вам нужно будет сохранить его как keyword
(который вы тогда не сможете выполнять в диапазоне запросов).
Вы можете изменить отображение Kibana, чтобы оно отображало только формат гггг-ММ-дд, но учтите, что оно преобразует дату в часовой пояс зрителя, что может привести к тому, что день будет отличаться от того, который вы указали в поле ввода.
Если вы хотите использовать дату в виде строки, вам нужно создать сопоставление для рассматриваемого индекса, чтобы предотвратить обработку даты по умолчанию.