logstash 聚合过滤器插件中的嵌套 json 个对象

Nested json objects in logstash aggregate filter plugin

我正在使用 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 以上进行创建?

首先要生成嵌套哈希,您应该使用 hashrockets => 而不是哈希内的赋值。一个人可能会在一轮中创建这个散列:

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

然后你可以用 JSON.dump

生成 JSON
require 'json'
JSON.dump(map)