Regex 如何使用logstash删除字段名中的下划线?
我正在考虑使用Regex 如何使用logstash删除字段名中的下划线?,regex,logstash,Regex,Logstash,我正在考虑使用mutate过滤器和rename选项,但我不知道如何使用相应的正则表达式来实现这一点: filter { mutate { rename => { "any_field_with_underscore" => "anyfieldwithunderscore" # i don't know how to write regex for this ... } } } 有人能帮忙吗?文档中没有指示rename{}使用regexp 我已经看
mutate
过滤器和rename
选项,但我不知道如何使用相应的正则表达式来实现这一点:
filter {
mutate {
rename => {
"any_field_with_underscore" => "anyfieldwithunderscore" # i don't know how to write regex for this ...
}
}
}
有人能帮忙吗?文档中没有指示
rename{}
使用regexp
我已经看到使用ruby{}
过滤器完成了这项工作
根据要求,这里有一些未经测试的Ruby:
文档中没有指示
rename{}
使用regexp
我已经看到使用ruby{}
过滤器完成了这项工作
根据要求,这里有一些未经测试的Ruby:
以奥巴马的回答为基础
在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
"
}
}
还可以看到,这也会对客户的答案起到同样的作用
在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
"
}
}
还可以看到这也会起到同样的作用好吧。。。好吧,只是有点贪婪,一个人如何用ruby{}实现它呢?它几乎可以工作。存储kvs并将其添加到迭代之外没有什么大不了的:发生了Ruby异常:无法在迭代期间将新键添加到哈希中{:level=>:error,:file=>“logstash/filters/Ruby.rb”,:line=>“41”,:method=>“filter”}这就是为什么它会在循环之前将键复制到一个新变量。也许你把它从代码中去掉了?与LS<5.x一样工作得很好,但是请注意,直接访问事件对象在较新版本中不起作用,因为它已被纯Java对象取代,需要通过getter和setter进行访问。好的。。。好吧,只是有点贪婪,一个人如何用ruby{}实现它呢?它几乎可以工作。存储kvs并将其添加到迭代之外没有什么大不了的:发生了Ruby异常:无法在迭代期间将新键添加到哈希中{:level=>:error,:file=>“logstash/filters/Ruby.rb”,:line=>“41”,:method=>“filter”}这就是为什么它会在循环之前将键复制到一个新变量。也许您从代码中去掉了它?与LS<5.x的情况一样完美,但请注意,直接访问事件对象在较新版本中不起作用,因为它已被纯Java对象取代,需要通过getter和setter进行访问。