我想在logstash中尝试解析json数据。但它是嵌套和逃脱的。
我对在json中的子字段中重新解析转义的json有疑问。
例如:
{"d1": 1, "d2": "{\"c1\": 1, \"c2\": 2}" }
在一般的编程环境中,这很容易解决这个问题。
但是,对于这种情况,logstash配置并不容易。
我能否得到这个案例的提示?
答案 0 :(得分:2)
我们走了:
filter {
# this parses the first json
json {
source => "message"
}
# This parses your nested json
json {
source => "d2"
}
}
您可以将源设置为原始转义json所在的字段。过滤器为您完成其他所有工作。
使用stdin / stdout和你的输入,你得到:
artur@pandaadb:~/dev/logstash$ ./logstash-2.3.2/bin/logstash -f conf2/
Settings: Default pipeline workers: 8
Pipeline main started
{"d1": 1, "d2": "{\"c1\": 1, \"c2\": 2}" }
{
"message" => "{\"d1\": 1, \"d2\": \"{\\\"c1\\\": 1, \\\"c2\\\": 2}\" }",
"@version" => "1",
"@timestamp" => "2016-08-08T11:49:19.381Z",
"host" => "pandaadb",
"d1" => 1,
"d2" => "{\"c1\": 1, \"c2\": 2}",
"c1" => 1,
"c2" => 2
}
编辑:
如果" d2"原始属性困扰您,您可以在解析后删除该字段。
干杯,
阿图尔