我正在考虑使用mutate
过滤器和rename
选项,但我不知道相应的正则表达式可以实现这一点:
filter {
mutate {
rename => {
"any_field_with_underscore" => "anyfieldwithunderscore" # i don't know how to write regex for this ...
}
}
}
有人可以帮忙吗?
答案 0 :(得分:5)
文档中没有迹象表明rename{}
采用正则表达式。
我已经通过ruby{}
过滤器看到了这一点。
根据要求,这里有一些未经测试的 Ruby:
begin
keys = event.to_hash.keys
keys.each{|key|
if ( key =~ /_/ )
newkey = key.gsub(/_/, '')
event[newkey] = event.remove(key)
end
}
rescue Exception => e
event['logstash_ruby_exception'] = 'underscores: ' + e.message
end
答案 1 :(得分:1)
以Alain的答案为基础,
在Logstash> = 5.x中,强制执行事件对象访问器:
ruby {
code => "
begin
keys = event.to_hash.keys
keys.each{|key|
if ( key =~ /http_/ )
newkey = key.gsub(/http_/, '')
event.set(newkey, event.remove(key))
end
}
rescue Exception => e
event.set('logstash_ruby_exception', 'underscores: ' + e.message)
end
"
}
}
另见this feature request会做同样的事情