Я новичок в logstash, и у меня есть требование как текущее сценарий. У меня следующий формат журнала.Logstash Итерировать внутренние объекты и вставить в базу данных
{"library":"xyz","locations":["location1":"abc","location2":"mno"]}
Затем мне нужно добавить эти данные в базу данных в следующем формате.
- "место": "библиотека" (полей базы данных)
- "ABC": "хуг"
- "MnO": "хуг"
До сих пор я сделал извлечь json и поместить запись в базу данных. Но выше сценария мне нужно добавить две записи в базу данных. Мне нужно знать, как итерировать местоположение, и каждое место добавляет запись в базу данных. Ссылка на документацию или простой пример будет достаточно.
Это мой конф файл
input {
file {
path=> "filePath"
start_position => beginning
sincedb_path => "/dev/null"
}
}
filter {
grok{
match => { "message" => "%{GREEDYDATA:request}"}
}
json{
source => "request"
target => "parsedJson"
}
mutate {
add_field =>
"locations" => "%{[parsedJson][locations]}"
"library" => "%{[parsedJson][library]}"
}
remove_field => ["request", "message", "@version", "host", "parsedJson"]
}
}
output {
stdout {
codec => rubydebug
}
mongodb{
collection => "library"
database => "db"
uri => "mongodb://127.0.0.1:27017"
}
}
Когда вы говорите базу данных, вы имеете в виду вывод в терминах elasticsearch? можете ли вы изменить свой вопрос и добавить в него свой конфигурационный файл? – pandaadb
Привет @pandaadb i обновленный файл конфигурации. Спасибо за ваш комментарий. – Sajithv
в порядке - поэтому я думаю, что это может быть невозможно в том виде, каким вы этого хотите. Выход только получает 1 событие и отправляет это событие. Если вы хотите, чтобы они были отдельными, вам необходимо либо (a) создать фильтр, который отделяет ваши поля и дает новые события (в настоящее время это возможно только с помощью настраиваемых фильтров), либо (b) создает собственный выходной плагин (на основе mongodb), который делает Правильно. – pandaadb