Как разобрать дату в elasticsearch 5.x и Filebeat

Я использую elasticsearch 5.x и Filebeat и хочу знать, есть ли способ анализа даты (метки времени) непосредственно в файле (не хочу использовать logstash). Я использую json.keys_under_root: true, и он отлично работает, но проблема в том, что временная метка (на нас) распознается как строка. Все остальные поля были автоматически распознаны как правильные типы, но это не так. введите здесь описание изображения

Как я могу сопоставить его как дату?


person alphiii    schedule 15.05.2017    source источник


Ответы (1)


Вы можете использовать Filebeat с функцией ES Ingest Node. чтобы проанализировать ваше поле timestamp и применить значение к полю @timestamp.

Вы должны настроить простой конвейер в Elasticsearch, который применяет дату к входящим событиям.

PUT _ingest/pipeline/my-pipeline
{
  "description" : "parse timestamp and update @timestamp",
  "processors" : [
    {
      "date" : {
        "field" : "timestamp",
        "target_field" : "@timestamp"
      }
    },
    {
      "remove": {
        "field": "timestamp"
      }
    }
  ],
  "on_failure": [
    {
      "set": {
        "field": "error.message",
        "value": "{{ _ingest.on_failure_message }}"
      }
    }
  ]
}

Затем в Filebeat настройте эластичный поиск output для отправки данных в новый конвейер.

output.elasticsearch:
  hosts: ["http://localhost:9200"]
  pipeline: my-pipeline
person A J    schedule 15.05.2017
comment
Это кажется очень элегантным решением, попробуем и примем ответ. Мне просто интересно, возможно ли это, изменив шаблон файла? - person alphiii; 16.05.2017
comment
Можно изменить шаблон индекса, чтобы поле timestamp интерпретировалось как дата, но это не заменит поле @timestamp новым значением. Если у вас есть другие данные, использующие @timestamp, вы, вероятно, захотите быть последовательными. - person A J; 17.05.2017
comment
Что я испытал, так это то, что для распознавания поля как даты вам нужно только поместить его в правильный формат в файле журнала (пример: "2017-05-17T06:07:51.658998+00:00"), который затем анализируется как дата. Но я еще немного погуглил и обнаружил, что нет прямого способа проанализировать наше разрешение, моя дата просто усекается (если вы нашли его, пожалуйста, дайте мне знать). - person alphiii; 18.05.2017
comment
То, что вы говорите, имеет смысл, и я, вероятно, заменю @timestamp своей собственной временной меткой через конвейер. Спасибо. - person alphiii; 18.05.2017