在Logstash中创建对象数组

时间:2017-08-23 15:17:01

标签: logstash

让我们说在给定的事件中我有4个字段 psn1_name(保持值“A”), psn1_age(保持值10), psn2_name(保持值“B”), psn2_age(保持值20) 我想创建一个场人,使得人具有以下结构

person = [ { “名”:“A” “时代”:10 }, { “名”:“B” “时代”:20 } ]

有人可以在我的logstash配置的过滤器部分中建议如何实现这一点。

2 个答案:

答案 0 :(得分:1)

您可以使用ruby过滤器以更精细的方式处理数据。 这是未经测试的,但应该可以帮助您找到解决方案:

filter {
    ruby {
        code => "
                event['person'] = [{"name" => event['psn1_name'], "age" => event['psn1_age']},{"name" => event['psn2_name'], "age" => event['psn2_age']}]
        "
    }
}

答案 1 :(得分:1)

从logstash 5中了解事件API已更改(https://www.elastic.co/guide/en/logstash/current/event-api.html)。

filter {
  ruby {
        code => '
          event.set("person", [{"name" => event.get("psn1_name"), "age" => event.get("psn1_age")}, {"name" => event.get("psn2_name"), "age" => event.get("psn2_age")}])
        '
  }
  mutate {
    remove_field => ["psn1_name", "psn1_age", "psn2_name", "psn2_age"]
  }
}