2014-10-09 73 views
5

使用Logstash 1.4.2,我有一個字段myfield,它是我的JSON文檔中的一個布爾值。Logstash config:檢查是否存在布爾字段

要檢查它是否存在(不關心布爾值),我用:

if[myfield] { ...exists... } else { ...doesn't exist... } 

結果從測試這個條件語句是:

[myfield] does not exist --> false 
[myfield] exists, is true --> true 
[myfield] exists, is false --> false //expected true because the field exists 

它正在檢查布爾價值,而不是它的存在

如何檢查布爾型字段是否存在?

+0

鏈接到github問題https://github.com/elastic/logstash/issues/1867 – spuder 2015-04-20 18:01:51

回答

3

有點蹩腳,它不能正常工作,但是你可以像這樣破解它 - 添加一個字符串表示形式的布爾值,然後刪除添加的字段:

filter { 
    mutate { 
    add_field => { "test" => "%{boolean}" } 
    } 
    if [test] == 'true' or [test] == 'false' { 
    // field is present and set right 
    } else { 
    // field isn't present or set to something other than true/false 
    } 
    mutate { 
    remove_field => [ "test" ] 
    } 
} 
+0

謝謝。我已經知道了;這只是混亂,並增加了一些額外的CPU週期。 – bradvido 2014-10-13 22:01:54

+0

說真的,沒有更好的選擇? – kev 2017-12-01 01:15:49

+0

https://stackoverflow.com/questions/30309096/logstash-check-if-field-exists似乎說有一個更好的方式布爾 – Alcanzar 2017-12-01 01:20:11