使用 ruby 过滤器检查并删除多个空值

Check and remove multiple null values using ruby filter

我正在尝试编写一个可以检查和删除多个空值字段的过滤器。

例如,

filter {
  mutate {
   remove_tag => [ "foo_%{somefield}" ] }
}

但我需要对 json 中的许多字段执行此检查,因此我想避免使用多个 if 条件。 在 Google 上搜索,我找到了这个

ruby {
    code => "event.to_hash.delete_if {|field, value| value == 'null' }"
 }

但它不起作用,我不太确定它是如何工作的。 有什么想法吗?

您需要遍历所有字段并检查值是否为 nil(ruby 中为空);删除 key 如果它是 nil.

这个 ruby 过滤器可以工作,

ruby {
    code => "
        hash = event.to_hash
        hash.each do |key,value|
            if value == nil
                event.remove(key)
            end
        end
    "
}

如果有帮助,请告诉我。