Logstash聚合过滤器插件中的嵌套JSON对象

时间:2019-11-28 05:30:52

标签: json ruby logstash logstash-grok logstash-jdbc

我正在使用logstash聚合过滤器插件将数据插入ES。

我想创建一个

之类的json
"Countries" : {
        "Asia" : {
            "name" : "Srilanka"
        },
        "Africa" : {
            "name" : "Kenya"
        }
    }

上传到ES时。

我尝试过

map['Countries'] = {
        map['Asia'] =  {
            'name' => event.get('name_Asia')
        },
        map['Africa'] =  {
            'name' => event.get('name_Africa')
        }
}

但是它不起作用。 是否可以在json上方进行创建?

1 个答案:

答案 0 :(得分:1)

首先要产生嵌套哈希,您应该使用哈希火箭=>而不是哈希内部的赋值。一个回合可以创建此哈希值:

map = { 
  'Countries' => {
    'Asia' =>  {
      'name' => event.get('name_Asia')
    },
    'Africa' => {
      'name' => event.get('name_Africa')
    }
  }
}

然后您可以使用JSON.dump

从中生成JSON。
require 'json'
JSON.dump(map)