2013-12-08 12 views
5

में नए फ़ील्ड के लिए लोचदार खोज विश्लेषक सेट करना GROK filter का उपयोग करके, हम लॉगस्टैश में नया फ़ील्ड जोड़ सकते हैं।लॉगस्टैश

लेकिन फिर, मैं सोच रहा हूं कि उस विशेष क्षेत्र के लिए विश्लेषक को कैसे सेट किया जाए।

उदाहरण के लिए:, मैं एक नया आईडी फ़ील्ड जो a_b की तरह एक क्षेत्र है है, लेकिन सामान्य विश्लेषक Elasticsearch द्वारा भेज दिया, a और b में इस टूट जाएगा। इस वजह से मैं उस विशेष क्षेत्र पर शर्तों की सुविधा को कुशलता से लागू नहीं कर सकता और इसे उपयोगी बना सकता हूं।

यहां आईडी फ़ील्ड के लिए, मैं अपने स्वयं के एक कस्टम विश्लेषक को लागू करना चाहता हूं, जो मूल्य को टोकननाइज़ नहीं करता है लेकिन लागू लोअरकेस फ़िल्टर।

लॉगस्टैश में यह कैसे किया जा सकता है।

उत्तर

9

Elasticsearch में डिफ़ॉल्ट विश्लेषक दो शब्दों में Standard tokenizer, जो a b tokenize होगा का उपयोग कर मामले tokenize देगा: a और b, जो कि डिफ़ॉल्ट के बाद रोकने के शब्द फिल्टर टोकन सिर्फ एकल पद b में बदल दिया जाएगा। एक छोटे से उदाहरण के लिए this play देखें जो दिखाता है कि पाठ का विश्लेषण कैसे किया जाता है।

क्रम इस तरह से आपके द्वारा निर्दिष्ट विश्लेषण करने के लिए, हम इस तरह के रूप में हमारे विश्लेषक कॉन्फिगर करना:

"analyzer": { 
    "my_id_analyzer": { 
     "type": "custom", 
     "tokenizer": "keyword", 
     "filters": ["lowercase"] 
    } 
} 

Byt Logstash आमतौर पर नए अनुक्रमणिका बनाता है जब भी आवश्यकता हो, हम यकीन है कि यह विश्लेषक के लिए उपलब्ध है करना है के बाद से जब वे बनाए जाते हैं तो सभी अनुक्रमणिका। इसे प्राप्त करने के दो तरीके हैं: 1) इसे लोचदार खोज उदाहरण कॉन्फ़िगरेशन (elasticsearch.yml) में जोड़ें, या 2) एक इंडेक्स टेम्पलेट बनाएं जिसमें विश्लेषक शामिल है।

चूंकि हमें केवल विशिष्ट इंडेक्स पर इस विश्लेषक की आवश्यकता है (यानी उपसर्ग logstash- के साथ इंडेक्स)। Index template API का उपयोग करके, हम कर सकते हैं निम्नलिखित:

curl localhost:9200/_template/logstash-id -XPUT -d '{ 
    "template": "logstash-*", 
    "settings" : { 
     "analysis": { 
      "analyzer": { 
       "my_id_analyzer": { 
        "type": "custom", 
        "tokenizer": "keyword", 
        "filters": ["lowercase"] 
       } 
      } 
     } 
    }, 
    "mappings": { 
     "_default_": { 
      "properties" : { 
       "id" : { "type" : "string", "analyzer" : "my_id_analyzer" } 
      } 
     } 
    } 
}' 

उपरोक्त आदेश प्रदर्शन करने के बाद, इस टेम्पलेट उपसर्ग logstash- बाद में बनाया के साथ किसी भी सूचकांक के लिए लागू होगी, और केवल "जादू" भाग जोड़ा मानचित्रण है परिभाषा, जो अंतर्निहित प्रकार _default_ का उपयोग करती है, जो दिए गए इंडेक्स में "किसी भी प्रकार" के लिए प्लेसहोल्डर है। इसका अर्थ यह है कि मैपिंग किसी भी प्रकार में जोड़ा जाएगा, चाहे उसके वास्तविक प्रकार के नाम के बावजूद।

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