5

वर्तमान में मैं अपने logstash कॉन्फ़िग फ़ाइल में कुछ इस तरह कर रहा हूँ:म्यूटेट में कनवर्ट करके पूर्णांक में "आईडी" के साथ समाप्त होने वाले सभी फ़ील्ड को कनवर्ट करें?

filter { 
    ... 
    mutate { 
     ... 
     convert => { 
      "blahId" => "integer" 
      "blahblahId" => "integer" 
      ... 
      ... 
      "b...blahId" => "integer" 
     } 
     ... 
    } 
    ... 
} 

तो बुनियादी तौर पर मैं सभी "आईडी" के साथ समाप्त पूर्णांक टाइप करने के लिए खेतों में परिवर्तित करना चाहते। क्या एक लाइन में ऐसा करने का कोई तरीका है? "*Id" => "integer" की तरह कुछ ऐसा करता है?

संपादित: मैं

convert => { 
    "*Id" => "integer" 
} 

जैसा कि मैंने उम्मीद की कोशिश की, काम नहीं किया।

शायद रूबी फ़िल्टर का उपयोग करना?

+0

क्या आपको इसका समाधान मिला? मुझे अभी भी इस समस्या का सामना करना पड़ रहा है – DaTebe

उत्तर

2

नहीं विशेष रूप से इस का जवाब है, लेकिन इस मैं क्या कर अंत है:

ruby { 
     code => " 
      fieldArray = event['kvmess'].split('|'); 
      for field in fieldArray 
       name = field.split('=')[0]; 
       value = field.split('=')[1]; 
       if value =~ /\A\d+\Z/ 
        event[name] = value.to_i 
       else 
        event[name] = value 
       end 
      end 
     " 
    } 

मेरे kvmessकी तरह था "blahId = 123 | blahblahId = 456 | कुछ = बात | b..blahId = 789 "। तो इसने पूर्णांक टाइप करने के लिए संख्यात्मक मान वाले सभी कुंजियों को परिवर्तित कर दिया।

एक प्लगइन नहीं है - kv इस के लिए सटीक अर्थ लेकिन यह तो मैं बजाय इस माणिक प्लगइन का उपयोग कर समाप्त हो गया int करने के लिए डेटा-प्रकार बदलने के लिए सुविधा उपलब्ध नहीं है।

+0

आपको पोस्टिंग के लिए धन्यवाद यह जवाब एक ही दृष्टिकोण के लिए खोज रहा था। क्या आप केवी था, लेकिन प्रत्येक गतिशील मान को int प्रकार में बदलने की आवश्यकता के साथ अटक गया। अब आपके संस्करण का परीक्षण करेगा। – Altenrion

0

मुझे लगता है कि आप इस के लिए गहरे लाल रंग का फिल्टर का उपयोग कर सकते हैं:

ruby { 
     code => " 
       for k,v in event 
        if k.match(/^.*Id$/i) 
         event[k]=v.to_i 
        end 
       end 
     " 
} 

नोट: मैं इसे परीक्षण नहीं किया।

+0

यह काम नहीं करता है: 'रूबी अपवाद हुआ: # के लिए अपरिभाषित विधि \' प्रत्येक '# <लॉगस्टैश :: घटना: 0x15016b6> {: स्तर =>: त्रुटि} ' – baudsp

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