2017-05-25 96 views
0

如何在Logstash中获取只嵌套的json?在Logstash中只获取嵌套的JSON

{ 
 
    "metadata_1":"Meta 1", 
 
    "metadata_2":"Meta 2", 
 
    ... 
 
    "metadata_N":"Meta N", 
 
    "mydata":{ 
 
     "name":"User Name 1", 
 
     "surname":"User SurName 1" 
 
    } 
 
}

我想只有 “MYDATA”。所有的“元数据”必须从结果中完全删除。 Logstash配置:

input { 
 
    stdin { } 
 
} 
 
filter { 
 
    json { 
 
     source => "message" 
 
    } 
 
} 
 
output { 
 
    stdout { codec => rubydebug } 
 
}

没有工作对我来说:

source => "message" 
source => "mydata" 
source => "[message][mydata]" 

预期的结果是( “MYDATA” 为根):

{ 
    "name":"User Name 1", 
    "surname":"User SurName 1" 
} 

回答

1

prune过滤器应该做你w蚂蚁:

prune { 
    whitelist_names => ["mydata"] 
} 
+0

谢谢。这大部分与我正在寻找的东西很接近。但是我看到结果不是根,而是作为“mydata”对象。而“修剪”没有“目标”字段。并且像json {source =>“mydata”}之类的“prune”之后链json过滤器没有效果。 –

+0

删除后,请参阅此答案:https://stackoverflow.com/a/44183774/2785358 – Alcanzar

+0

酷!谢谢 。 。 –