Logstash - 在 ruby 过滤器中导入模块

Logstash - Import module inside ruby filter

我正在尝试在 logstash 过滤器中使用 ruby 代码,但出现错误:

filter {
    ruby {
        code => "
arr = [ {id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }]
if arr.any? {|h| h[:name] == "Sam"}
event['doc']['userInput']['programName'] = '222222'
end"
         }
      }

我假设错误是因为我需要导入 Enumerable 模块(因为没有行 arr.any? {|h| h[:name] == "Sam"} 不会引发错误),但我不知道如何在 logstash 的 [=17] 中导入模块=]过滤器?

问题是因为Sam在双引号之间,你需要在整个代码块中使用单引号,因为代码本身被双引号包围。

filter {
ruby {
    code => "
       arr = [ {id: 1, name: 'John' }, {id: 2, name: 'Sam' }, {id: 3, name: 'Bob' }]
       if arr.any? {|h| h[:name] == 'Sam'}
          event['doc']['userInput']['programName'] = '222222'
       end"
     }
  }