让我们说在给定的事件中我有4个字段 psn1_name(保持值“A”), psn1_age(保持值10), psn2_name(保持值“B”), psn2_age(保持值20) 我想创建一个场人,使得人具有以下结构
person = [ { “名”:“A” “时代”:10 }, { “名”:“B” “时代”:20 } ]
有人可以在我的logstash配置的过滤器部分中建议如何实现这一点。
答案 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"]
}
}