Logstash 迭代内部对象并插入到数据库

Logstash Iterate inner objects and insert to database

我是 logstash 的新手,我有流动场景的要求。我有以下日志格式。

{"library":"xyz","locations":["location1":"abc","location2":"mno"]} 

然后我需要按照以下格式将这些数据添加到数据库中。

到目前为止,我已经完成提取 json 并将记录放入数据库。但在上述情况下,我需要向数据库中添加两个条目。我需要知道如何迭代位置和每个位置将记录添加到数据库.documentation link 或简单的例子就足够了。

这是我的配置文件

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"
  }

}

您可以使用 split filter 实现您想要的效果,它会为字段的每个拆分创建单独的事件。如果您在逗号分隔的数组中有两个位置,则可以使用

split {
  target => "field"
  terminator => ","
}

这将为每个逗号分隔值创建一个单独的事件。