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