在logstash中经常遇到嵌套json的情况,一个比较通用的解决方案就是使用多个filter中的json{}组件来分别对每个层级的json进行解析。
例如:
"address": {
"street": {
"name": "Google",
"url": "http://www.google.com"
},
"city": "江苏苏州",
"country": "中国"
}
可以使用如下代码进行分层解析:
json{
source=>"address"
}
json{
source=>"street"
}
还有一种常见的情况,json{}组件解析了jsonobj,形成了层级结构,这时候可以使用字段拼装的方式把自己需要的字段放到同一级。
ruby{
code =>"event.set("test", event.get("[testA][testB]"))"
}
或者使用:add_field{}进行拼装