是否可以在过滤器内使用ruby代码?像这样的东西:
filter {
csv{
ruby {
code => "
fieldArray = event['message'].split(',')
for field in fieldArray
event[field] = field
end
"
}
}
}
答案 0 :(得分:1)
不,csv {}是一个过滤器,而ruby {}是一个过滤器,所以当你展示时,它们不会互相嵌套。
你还没有描述这个问题,但也许只是使用ruby {}就是你正在寻找的。 p>
编辑:有关问题的更多信息,这里有一些注释:
Logstash一次运行一个事件,因此对于csv {},它一次处理文件中的一行。即使使用ruby {}过滤器,也无法查看整个输入。
但是,由于标题行是第一个,因此您应该能够放入ruby {},将此行的列隐藏到持久变量中,对于后续行,循环遍历ruby中的字段并重命名它们
您还可以将csv {}过滤器扩展为"标头识别",这将使大量的logstash用户受益。