Я пытаюсь импортировать данные из MySQL в elasticsearch с помощью logstash, все работает нормально, и у меня все данные хорошо импортированы. Однако одно из полей в MySQL, называемое «метаданные», следует определенному шаблону, например «имя_последнее_гггг-ММ-дд ЧЧ: мм: сс», так что, например, это одно из значений, которые оно может принимать «Mark_Karlos_2018-02-23 15 : 19: 55 ", на данный момент это поле импортировано в Elasticsearch как есть, я хочу, чтобы это поле было тремя полями в Elasticsearch" first_name "," last_name "," time ". Можно ли это сделать с помощью файла конфигурации Logstash? Если нет, есть ли другой способ сделать это?
Импортировать данные из MySQL в elasticsearch с помощью logstash после предварительной обработки
Ответы (1)
Вы можете использовать фильтр grok:
grok {
match => {"metadata"=> "%{GREEDYDATA:first_name}_%{GREEDYDATA:last_name}_%{TIMESTAMP_ISO8601:time}"}
}
Чтобы помочь вам с фильтром Grok:
person
baudsp
schedule
01.03.2018
Спасибо, это работает! но что, если datetime имеет настраиваемый формат, допустим, мое поле выглядит так: firstname_lastname_yyyyMMdd_HHmmss, а затем, используя тот же пример в вопросе Mark_Karlos_20180223_151955, как я могу изменить последнюю часть, чтобы прочитать этот настраиваемый формат datetime?
- person m.alsioufi; 02.03.2018
Вместо этого вы можете использовать
GREEDYDATA
, например: %{GREEDYDATA:time}
- person baudsp; 02.03.2018