如果已经提出这个问题我很抱歉,但我无法在任何地方找到它。
在Logstash中我有json输入,如下所示:
{
common_field: "commonValue",
events: {
ID_1: {
name: "name1",
other_field: "value1",
...
},
ID_2: {
name: "name2",
other_field: "value2",
...
},
ID_3: {
name: "name3",
other_field: "value3",
...
},
ID_4: {
name: "name4",
other_field: "value4",
...
}
}
}
logstash为每个“ID”创建单独事件的最佳方法是什么? Logstash不允许我拆分“事件”,我得到一个标签:[0] "_split_type_failure"
。任何指导都会非常有帮助!
答案 0 :(得分:1)
如果ID_1 / ID_2 / ID_3始终相同,则可以使用clone
过滤器克隆事件,然后删除克隆上的其他字段。如果他们不是,据我所知,唯一的方法是使用自定义插件。
我最后一次检查(几年前),clone
使用的机制(yield
)无法用于红宝石过滤器。
要使用克隆,您可以这样做:
clone {
clones => ["ID_1","ID_2"..,"ID_n"]
}
if [type] == "ID_1" {
mutate {
remove_field => ["[events][ID_2]","[events][ID_3]",..."[events][ID_n]"]
rename => {
"[events][ID_1][name]" => "name",
"[events][ID_1][other_field]" => "other_field"
}
}
} else if [type] == "ID_2" {
mutate {
remove_field => ["[events][ID_1]","[events][ID_3]",..."[events][ID_n]"]
rename => {
"[events][ID_2][name]" => "name",
"[events][ID_2][other_field]" => "other_field"
}
}
} ...
答案 1 :(得分:0)
如何将哈希转换为数组,然后拆分数组?
我会做像
这样的事情ruby { code => "event.set('events_array', event.get('events').to_a) "}
split {field => "events_array"
target => "new_object"
}