目前,我正在logstash配置文件中执行以下操作:
filter {
...
mutate {
...
convert => {
"blahId" => "integer"
"blahblahId" => "integer"
...
...
"b...blahId" => "integer"
}
...
}
...
}
因此,基本上我想将所有以“Id”结尾的字段都转换为整数类型。有一种方法可以做到这一点吗?像
"*Id" => "integer"
这样的东西呢?编辑:我尝试过
convert => {
"*Id" => "integer"
}
如我所料,没有用。
也许使用 ruby 过滤器?
最佳答案
没有具体的答案,但这就是我最终要做的事情:
ruby {
code => "
fieldArray = event['kvmess'].split('|');
for field in fieldArray
name = field.split('=')[0];
value = field.split('=')[1];
if value =~ /\A\d+\Z/
event[name] = value.to_i
else
event[name] = value
end
end
"
}
我的
kvmess
就像“blahId = 123 | blahblahId = 456 | some = thing | b..blahId = 789”。因此,这会将所有具有数字值的键转换为整数类型。
有一个插件-kv专门用于此功能,但是它没有将数据类型更改为int的功能,因此我最终使用了这个ruby插件。