Сохранение даты в микросекундном формате в ElasticSearch - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь сохранить набор событий из базы данных MySQL в эластичный поиск, используя плагин ввода jdbc с Logstash. Запись события в базе данных содержит поля даты в формате микросекунд. Практически, в базе данных есть записи между наборами микросекунд.

При импорте данных Elasticsearch усекает формат даты в микросекундах до миллисекунды. Как я могу сохранить данные в микросекундном формате? Документацияasticsearch говорит, что они следуют API времени JODA для хранения форматов даты, который не поддерживает микросекунды и усечение, добавляя Z в конце отметки времени.

Выборка временной метки после усечения: 2018-05-02T08: 13: 29.268Z

Исходная метка времени в базе данных: 2018-05-02T08: 13: 29.268482

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Дополнительное примечание: тип данных «дата» хранит данные в миллисекундах в эластичном поиске, поэтому здесь, в случае, если в запросах диапазонов дат требуется уровень точности наносекунд; соответствующий тип данных: date_nanos

0 голосов
/ 02 мая 2018

Z - это не результат усечения, а часовой пояс GMT.

ES также поддерживает микросекунды, если вы указали правильный формат даты в своем отображении.

Если поле даты в вашем отображении указано так:

    "date": {
      "type": "date",
      "format": "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
    }

Затем вы можете индексировать даты с точностью до микросекунды, как в вашей базе данных

UPDATE

Вот полное воссоздание, которое показывает вам, что это работает:

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"
}
...