2014-10-09 7 views
5

लॉगस्टैश 1.4.2 का उपयोग करके, मेरे पास एक फ़ील्ड myfield है जो मेरे JSON दस्तावेज़ में एक बूलियन मान है। यदि वह मौजूद है (बूलियन मान के बारे में परवाह नहीं है)लॉगस्टैश कॉन्फ़िगरेशन: जांचें कि बूलियन फ़ील्ड मौजूद है

जाँच करने के लिए मैं प्रयोग किया है:

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

जिथब मुद्दे से लिंक https://github.com/elastic/logstash/issues/1867 – spuder

उत्तर

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

धन्यवाद। मुझे पहले से यह पता है; यह सिर्फ गन्दा है और कुछ अतिरिक्त सीपीयू चक्र जोड़ता है। – bradvido

+0

गंभीरता से, कोई बेहतर विकल्प नहीं है ?? – kev

+0

https://stackoverflow.com/questions/30309096/logstash-check-if-field-exists ऐसा लगता है कि एक बूलियन के लिए एक बेहतर तरीका है – Alcanzar

संबंधित मुद्दे