将嵌套字段转换为logstash中的列表json

将嵌套字段转换为logstash中的列表json,logstash,Logstash,我想将字段转换为json列表,如下所示: “人”:{ “名称”:“XX”, “地址”:“124” } 到 “人”:[{“姓名”:“XX”, “地址”:“124”}] 谢谢您的帮助。这里可以使用一点ruby魔法: input { stdin{} } filter { ruby { code => " require 'json' event['res'] = [JSON.parse(event['mess

我想将字段转换为json列表,如下所示: “人”:{ “名称”:“XX”, “地址”:“124” }

“人”:[{“姓名”:“XX”, “地址”:“124”}]


谢谢您的帮助。

这里可以使用一点ruby魔法:

input {  
    stdin{}
}

filter {

    ruby {
        code => "
            require 'json'
            event['res'] = [JSON.parse(event['message'])['person']]
        "
    }

}


output {
     stdout { codec => rubydebug }
}
这将简单地解析包含Json文档的
消息
字段,然后提取
person
对象并将其添加到字段中

测试结果如下所示:

    artur@pandaadb:~/dev/logstash$ ./logstash-2.3.2/bin/logstash -f conf_json_list/ 
Settings: Default pipeline workers: 8
Pipeline main started
{ "person": { "name":"XX", "adress":"124" }}
{
       "message" => "{ \"person\": { \"name\":\"XX\", \"adress\":\"124\" }}",
      "@version" => "1",
    "@timestamp" => "2017-03-15T11:34:37.424Z",
          "host" => "pandaadb",
           "res" => [
        [0] {
              "name" => "XX",
            "adress" => "124"
        }
    ]
}
如您所见,您的哈希现在位于索引0上的列表中

希望有帮助


Artur

请发布您迄今为止尝试的内容名称字段是否已硬编码(始终为名称+地址)?也出于好奇,这有什么意义?如何使用带有随机键值对的列表?这很可能是ruby过滤器,因为这将涉及一些自定义逻辑名和地址,这些逻辑名和地址是从xml文件提取到字段中的。我想创建一个新字段,它是名称和地址字段的列表。原因是我有一个模块,它正在等待一个json列表来解析它并提取数据。。另一个建议是:ruby{code=>“event['aa']=[event['aa']]”