Сохранение даты в микросекундном формате в ElasticSearch
Я пытаюсь сохранить набор событий из базы данных MySQL в эластичный поиск, используя плагин ввода jdbc с Logstash. Запись события в базе данных содержит поля даты в формате микросекунд. Практически, есть записи в базе данных между множеством микросекунд.
При импорте данных Elasticsearch усекает микросекундный формат даты в миллисекундный формат. Как я могу сохранить данные в микросекундном формате? Документация asticsearch говорит, что они используют API времени JODA для хранения форматов даты, который не поддерживает микросекунды и усечение, добавляя Z в конце временной метки.
Примерная временная метка после усечения: 2018-05-02T08: 13: 29.268Z
Исходная метка времени в базе данных: 2018-05-02T08: 13: 29.268482
1 ответ
Z
это не результат усечения, а часовой пояс GMT.
ES также поддерживает микросекунды, если вы указали правильный формат даты в своем отображении.
Если поле даты в вашем отображении указано так:
"date": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
}
Затем вы можете индексировать даты с точностью до микросекунды, как в вашей базе данных
ОБНОВИТЬ
Вот полное воссоздание, которое показывает вам, что это работает:
PUT myindex
{
"mappings": {
"doc": {
"properties": {
"date": {
"type": "date",
"format": "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
}
}
}
}
}
PUT myindex/doc/1
{
"date": "2018-05-02T08:13:29.268482"
}
Боковое примечание: тип данных date хранит данные в миллисекундах в elasticsearch, поэтому здесь в случае, если уровень точности наносекунд требуется в запросах диапазонов дат; соответствующий тип данных - date_nanos