2017-01-01 44 views
0

我想一個logstash過濾器中使用Ruby代碼,但它給出了一個錯誤:Logstash - 裏面紅寶石導入模塊過濾

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" 
     } 
     } 

我認爲錯誤是因爲我需要導入可枚舉模塊(beucase沒有行arr.any? {|h| h[:name] == "Sam"}沒有錯誤引發),但我不知道如何在logstash的ruby過濾器中導入模塊?

+1

問題是因爲'Sam'是雙引號之間,你需要因爲代碼是用雙引號包圍本身在整個代碼塊中使用單引號。 – Val

+0

@Val - 非常感謝你,你解決了它!如果你寫下你的評論作爲答案,我肯定會接受它。 – BornToCode

回答

1

問題是因爲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" 
    } 
    }