我是logstash的新手,我的要求是流动的场景。我有以下日志格式。
{"library":"xyz","locations":["location1":"abc","location2":"mno"]}
然后我需要使用以下格式将这些数据添加到数据库。
到目前为止,我已经完成了提取json并将记录放到数据库中。但在上面的场景中,我需要向数据库添加两个条目。我需要知道如何迭代位置,每个位置都将记录添加到数据库。文档链接或简单示例就足够了。
这是我的conf文件
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"
}
}
答案 0 :(得分:1)
您可以使用split
filter实现您想要的效果,为每个字段拆分创建单独的事件。如果您在逗号分隔的数组中有两个位置,则可以使用
split {
target => "field"
terminator => ","
}
这将为每个逗号分隔值创建单独的事件。