Reindex Elasticsearch, конвертирующий unixtime в дату - PullRequest
0 голосов
/ 06 июня 2019

У меня есть индекс Elasticsearch, который использует поле @timestamp для хранения даты в поле date.

Есть много записей, в которых отсутствует поле @timestamp, но есть поле timestamp, содержащее метку времени Unix. (Генерируется из PHP, поэтому секунды, а не миллисекунды)

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

Как я могу использовать скрипт Painless в переиндексе и установить @timestamp там, где он отсутствует, IF есть числовое поле timestamp с меткой времени unix?

Вот пример записи, которую я хотел бы преобразовать.

  {
    "_index": "my_log",
    "_type": "doc",
    "_id": "AWjEkbynNsX24NVXXmna",
    "_score": 1,
    "_source": {
      "name": null,
      "pid": "148651",
      "timestamp": 1549486104
    }
  },

1 Ответ

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

Вы смотрели на модуль приема Elasticsearch ??

https://www.elastic.co/guide/en/elasticsearch/reference/current/date-processor.html

Анализирует даты из полей, а затем использует дату или метку времени в качестве метка времени для документа. По умолчанию обработчик даты добавляет проанализировал дату как новое поле с именем @timestamp. Вы можете указать другое поле, установив параметр конфигурации target_field. Несколько форматов даты поддерживаются как часть одного процессора даты определение. Они будут использоваться последовательно для попытки разбора даты поля, в том же порядке они были определены как часть процессора определение.

Он делает именно то, что вы хотите :) В своем заявлении переиндексации вы можете направлять документы через этот процессор загрузки.

Если вам нужна дополнительная помощь, дайте мне знать, тогда я могу запрыгнуть за компьютер и помочь: D

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...