如果不匹配某个值,是否可以使用 Logstash 来删除字段?

Erw*_*ers 1 regex logstash logstash-grok

我们希望使用 Logstash 过滤日志,如果字段不包含“_log”,则删除字段。该remove_field语法可用,但仅适用于删除符合特定条件的字段。

filter {
  grok {
    remove_field => [ "log_" ]
  }
}
# This works for removing the log_ field, we want to remove everything that does NOT match log_.
Run Code Online (Sandbox Code Playgroud)

如果某个字段不符合某个条件,是否也可以删除该字段?

我们尝试使用正则表达式来执行此操作,但这不起作用(是否在某处记录了您不能使用正则表达式?)。删除所有其他字段也是一种选择,但需要付出更多努力。我们希望有人可以帮助我们拟合所有不包含“log_”的字段。

Ala*_*ins 5

正则表达式应该有效:

filter {
  if [field] !~ /pattern/ {
    mutate {
      remove_field => [ "field" ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)