如何使用logstash下划线删除字段名称?如何使用logstash下划线删除字段名称?(How t

2019-05-12 10:02发布

我正在考虑使用mutate滤波器和rename的选择,但我不知道对应的正则表达式来实现这一目标:

filter {
  mutate {
    rename => {
      "any_field_with_underscore" => "anyfieldwithunderscore" # i don't know how to write regex for this ...
    }
  }
}

任何人都可以帮忙吗?

Answer 1:

还有,该文档没有任何迹象表明rename{}需要一个正则表达式。

我已经看到了这个用做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


Answer 2:

要建立在阿兰的回答,

在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
        "
 }

}

另请参阅此功能要求 ,将做同样的



文章来源: How to remove underscores in field names with logstash?