Logstash按正则表达式删除字段

Logstash按正则表达式删除字段,logstash,logstash-configuration,Logstash,Logstash Configuration,我正在使用一个程序来处理我们的一些修复日志。在这些消息中,我们收到多个自定义字段。这是格罗克过滤器的外部我将我关心的信息传递到这个辅助修复插件中 例如,我们的一些消息如下所示: "unknown_fields" => [ [0] "5000", [1] "9723", ], "5000" => "FOOBARVAL", "9723" => "BAZBOOHUM", "IDSource" => "RIC_CODE", 问题 有没有一种方

我正在使用一个程序来处理我们的一些修复日志。在这些消息中,我们收到多个自定义字段。这是格罗克过滤器的外部我将我关心的信息传递到这个辅助修复插件中

例如,我们的一些消息如下所示:

  "unknown_fields" => [
    [0] "5000",
    [1] "9723",
  ],
  "5000" => "FOOBARVAL",
  "9723" => "BAZBOOHUM",
  "IDSource" => "RIC_CODE",
问题 有没有一种方法可以使用
mutate
或基于正则表达式(
^\d+$
)的其他筛选器删除标记


更具体地说,是否有一种方法可以删除所有我知道将是自定义修复字段的整型字段(例如5000)?

此答案与此答案非常相似:

您可以这样做以匹配正则表达式:

filter {
  ruby {
    code => "
      event.to_hash.keys.each { |k|
        if k.match(/^\d+$/
          event.remove(k)
        end
      }"
  }
}

这个答案与这个非常相似:

您可以这样做以匹配正则表达式:

filter {
  ruby {
    code => "
      event.to_hash.keys.each { |k|
        if k.match(/^\d+$/
          event.remove(k)
        end
      }"
  }
}

我很欣赏另一个答案,但我最终使用了
prune
filter插件

prune {
    blacklist_names => ["[0-9]+", "unknown_fields", "tags"]
}

我很欣赏另一个答案,但我最终使用了
prune
filter插件

prune {
    blacklist_names => ["[0-9]+", "unknown_fields", "tags"]
}

TIL关于修剪:)TIL关于修剪:)