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

时间:2018-03-26 14:07:03

标签: ruby logstash logstash-grok

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

例如,

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

但我需要检查json中的许多字段,所以我想避免使用多个if条件。 在Google上搜索我发现了这个

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

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

1 个答案:

答案 0 :(得分:0)

您需要遍历所有字段并检查值是否为nil(ruby中为null);如果是key,请移除nil

这个红宝石过滤器可以使用,

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

如果有帮助,请告诉我。