2014-12-19 5 views
22

क्या यह एक प्रकार के लिए चुनिंदा खोज क्षेत्रों के अनुक्रमण को सक्षम करना संभव है? एक विशेष क्षेत्र के लिएलोचदार खोज में डिफ़ॉल्ट रूप से फ़ील्ड विश्लेषण को अक्षम करना

:

एक विशिष्ट सूचकांक के लिए मानचित्रण सेटिंग्स के माध्यम से, एक संपत्ति

{ "not_analyzed" "सूचकांक"} सेट कर सकते हैं। चूंकि मेरे दस्तावेज़ में बहुत से फ़ील्ड हैं और भविष्य में संरचना को बदलने की संभावना है, इसलिए मुझे एक मानचित्रण की आवश्यकता होगी जहां फ़ील्ड का डिफ़ॉल्ट रूप से विश्लेषण नहीं किया जाता है जब तक कि अलग-अलग निर्दिष्ट न किया जाए।

क्या यह संभव है?

उत्तर

31

हाँ - है dynamic templates

पर एक नज़र निम्नलिखित का प्रयास करें:

PUT /my_index 
{ 
    "mappings": { 
    "my_type": { 
     "dynamic_templates": [ 
      { "notanalyzed": { 
        "match":    "*", 
        "match_mapping_type": "string", 
        "mapping": { 
         "type":  "string", 
         "index":  "not_analyzed" 
        } 
       } 
      } 
      ] 
     } 
    } 
} 

गतिशील टेम्पलेट नए क्षेत्रों है कि अपने मानचित्रण में शामिल नहीं हैं के लिए है - डॉक्स से:

गतिशील_टेम्प्लेट के साथ, आप मैपिंग पर पूर्ण नियंत्रण ले सकते हैं जो नए ज्ञात फ़ील्ड के लिए जेनरेट किया गया है।

आप फ़ील्ड नाम के अनुसार मैपिंग भी बदल सकते हैं, उदा। "_data" में समाप्त होने वाले फ़ील्ड नामों के लिए मैपिंग का एक अलग सेट रखने के लिए "match": "*_data" का उपयोग करें।

+0

उन क्षेत्रों के बारे में क्या मैं विश्लेषण करना चाहता हूं? – Edmondo1984

+3

डायनामिक टेम्पलेट उन नए फ़ील्ड के लिए है जो आपके मैपिंग द्वारा कवर नहीं हैं - "डायनामिक_टेम्प्लेट्स के साथ, आप नए ज्ञात फ़ील्ड के लिए जेनरेट किए गए मैपिंग पर पूर्ण नियंत्रण ले सकते हैं।" आप फ़ील्ड नाम के अनुसार मैपिंग भी बदल सकते हैं, उदा। "_data" में समाप्त होने वाले फ़ील्ड के लिए मैपिंग का एक अलग सेट रखने के लिए "match": "* _data" का उपयोग करें। –

1

लोचदार खोज 5.x स्ट्रिंग प्रकार अक्षम है। इसके बजाय लोचदार खोज ने दो प्रकार टेक्स्ट और कीवर्ड पेश किया है। डेटा को माइग्रेट करने के कारणों के लिए इस ब्लॉग को पढ़ें https://www.elastic.co/blog/strings-are-dead-long-live-strings

तो विश्लेषक को अक्षम करने के लिए टेम्पलेट जोड़ने के बजाय, आप सटीक खोज के लिए फ़ील्ड.कीवर्ड का उपयोग कर सकते हैं। उदा। यदि फ़ील्ड नाम पूरा नाम है, और आप प्रविष्टियों

  1. पूरा नाम है: "जॉन डो"
  2. पूरा नाम: "जॉन"

तो, पूरा नाम: "जॉन" वापस आ जाएगी दो परिणाम है, जबकि पूरा नाम .keyword: "जॉन" एकल रिकॉर्ड लौटाएगा।

शायद ज़रुरत पड़े, तब भी आप पाठ क्षेत्र को निष्क्रिय करना चाहते, तो आप नीचे गतिशील टेम्पलेट

PUT _template/disable_all_analyzer 
    { 
    "template": "*", 
    "mappings": { 
     "_default_": { 
      "dynamic_templates": [ 
       { "notanalyzed": { 
        "match":    "*", 
        "match_mapping_type": "string", 
        "mapping": { 
         "type":  "keyword" 
        } 
        } 
       } 
      ] 
      } 
     } 
    } 

चीयर्स उपयोग कर सकते हैं, !!!

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