Logstash 日志存储检查是否存在&;解析子字段

Logstash 日志存储检查是否存在&;解析子字段,logstash,Logstash,在Logstash中,我有一个JSON有效负载,我解码如下: filter { json { source => "payload" target => "payloadData" } } 现在我想检查payloadData.\u extraData是否存在,然后反序列化它 我已经尝试过这种方法,使用了以下示例: 但是它什么都不做(没有崩溃,没有错误消息,只是什么都不做)正确的语法是: if [payloadData][_extra

在Logstash中,我有一个JSON有效负载,我解码如下:

filter 
{ 
   json 
   { 
     source => "payload" 
     target => "payloadData" 
   }
}
现在我想检查payloadData.\u extraData是否存在,然后反序列化它

我已经尝试过这种方法,使用了以下示例:


但是它什么都不做(没有崩溃,没有错误消息,只是什么都不做)

正确的语法是:

if [payloadData][_extraData] =~ /.+/   { }
输入示例:

{"foo":"bar","spam":"eggs","abc":"xyz","one":"two","three":"four","five":"six","seven":{"eight":"nine"}}
filter {
    json { source => message }
    if [seven][eight] =~ /.+/ {
        # do something
    }
}
配置:

{"foo":"bar","spam":"eggs","abc":"xyz","one":"two","three":"four","five":"six","seven":{"eight":"nine"}}
filter {
    json { source => message }
    if [seven][eight] =~ /.+/ {
        # do something
    }
}
除此之外,if语句中的代码没有任何作用。您需要指定应执行的筛选器。e、 g:

if [payloadData][_extraData] =~ /.+/  { 
   json {
       source => "payloadData[_extraData]"  
       target => "payloadData[extraData]" 
   }
} 

您希望在if语句中反序列化什么?第一个json过滤器应该能够识别嵌套对象。

啊,太棒了-谢谢。我要试一试。我需要第二次反序列化的原因是,它是一条包含另一条序列化消息的消息。就像
{“extraData”:“{\“bar\”:\“baz\”}