Импортировать данные из MySQL в elasticsearch с помощью logstash после предварительной обработки

Я пытаюсь импортировать данные из MySQL в elasticsearch с помощью logstash, все работает нормально, и у меня все данные хорошо импортированы. Однако одно из полей в MySQL, называемое «метаданные», следует определенному шаблону, например «имя_последнее_гггг-ММ-дд ЧЧ: мм: сс», так что, например, это одно из значений, которые оно может принимать «Mark_Karlos_2018-02-23 15 : 19: 55 ", на данный момент это поле импортировано в Elasticsearch как есть, я хочу, чтобы это поле было тремя полями в Elasticsearch" first_name "," last_name "," time ". Можно ли это сделать с помощью файла конфигурации Logstash? Если нет, есть ли другой способ сделать это?


person m.alsioufi    schedule 01.03.2018    source источник


Ответы (1)


Вы можете использовать фильтр grok:

grok {
    match => {"metadata"=> "%{GREEDYDATA:first_name}_%{GREEDYDATA:last_name}_%{TIMESTAMP_ISO8601:time}"}
}

Чтобы помочь вам с фильтром Grok:

Официальная документация

Существующие шаблоны

Чтобы проверить свои шаблоны

person baudsp    schedule 01.03.2018
comment
Спасибо, это работает! но что, если datetime имеет настраиваемый формат, допустим, мое поле выглядит так: firstname_lastname_yyyyMMdd_HHmmss, а затем, используя тот же пример в вопросе Mark_Karlos_20180223_151955, как я могу изменить последнюю часть, чтобы прочитать этот настраиваемый формат datetime? - person m.alsioufi; 02.03.2018
comment
Вместо этого вы можете использовать GREEDYDATA, например: %{GREEDYDATA:time} - person baudsp; 02.03.2018