logstash的kv模式分割后的全部字符在Elasticsearch里面的数据类型全都是string,这样聚合搜索很不方便,于是利用ruby插件实现一下自动转整数的kv模式
## logstash 5.x,由于logstash5.x不支持直接修改值,直接把值copy出来修改然后重新写进去
filter {
ruby {
code => "
fieldArray = event.get('[message][message]').split(/\u001F/);
kv = {};
for field in fieldArray
name = field.split('=')[0];
value = field.split('=')[1];
if value =~ /\A\d+\Z/
kv[name]=value.to_i
else
kv[name]=value
end
end
event.set('[monitor]',kv);
"
remove_field => ["[message][message]"]
}
}
### logstash 2.x
filter{
ruby {
code => "
fieldArray = event['message'].split(/\u001F/);
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
"
}
}
本文介绍如何使用Logstash的Ruby插件自动将分割后的字符串转换为整数,以便于后续的数据处理与聚合搜索。
2051

被折叠的 条评论
为什么被折叠?



