2013-08-14 12 views
19

में इंडेक्स बनाने के दौरान एक विश्लेषक को कैसे निर्दिष्ट करें, मैं एक विश्लेषक निर्दिष्ट करना चाहता हूं, इसे नाम देना चाहता हूं, और इंडेक्स बनाने के दौरान मैपिंग में उस नाम का उपयोग करना चाहता हूं। मैं खो गया हूं, मेरा ईएस उदाहरण हमेशा मुझे एक त्रुटि संदेश देता है।ElasticSearch

यह, मोटे तौर पर, मुझे क्या करना चाहते है चाहते हैं:

"settings": { 
    "mappings": { 
    "alfedoc": { 
     "properties": { 
     "id": { "type": "string" }, 
     "alfefield": { "type": "string", "analyzer": "alfeanalyzer" } 
     } 
    } 
    }, 
    "analysis": { 
    "analyzer": { 
     "alfeanalyzer": { 
     "type": "pattern", 
     "pattern":"\\s+" 
     } 
    } 
    } 
} 

लेकिन यह काम करने के लिए प्रतीत नहीं होता है; ES उदाहरण हमेशा मुझे

MapperParsingException[mapping [alfedoc]]; nested: MapperParsingException[Analyzer [alfeanalyzer] not found for field [alfefield]]; 

मैं (मानचित्रण आदि के अंदर), लेकिन कोई लाभ नहीं हुआ कई जगहों पर शब्दकोश की "analysis" शाखा डाल करने की कोशिश की तरह एक त्रुटि देता है। मुझे लगता है कि एक कामकाजी पूरा उदाहरण (जिसे मैं अभी तक नहीं ढूंढ सका) मुझे भी मदद करेगा। शायद मैं कुछ बुनियादी बात याद कर रहा हूँ।

उत्तर

27

"विश्लेषण" "सेटिंग्स" ब्लॉक में जाता है, जो इंडेक्स बनाते समय "मैपिंग्स" ब्लॉक से पहले या बाद में जाता है।

"settings": { 
    "analysis": { 
     "analyzer": { 
      "alfeanalyzer": { 
       "type": "pattern", 
       "pattern": "\\s+" 
      } 
     } 
    } 
}, 
"mappings": { 
    "alfedoc": { ... } 
} 

यहाँ एक अच्छा पूरा, उदाहरण है: Example 1

+4

हाँ, वास्तव में, मैं भूल गया था कि "सेटिंग" के अंतर्गत पिछले ब्रेस। तो "सेटिंग्स" और "मैपिंग" 2 अलग-अलग ब्लॉक होना चाहिए, और "विश्लेषण" ब्लॉक में "विश्लेषण" शामिल होना चाहिए। –

+0

उदाहरणों के लिए महान लिंक, धन्यवाद। – pulkitsinghal

+1

लिंक के लिए धन्यवाद, मुझे क्या चाहिए! लेकिन जिस बिंदु पर मैपिंग वास्तव में निर्दिष्ट करती है कि किसी विशेष संपत्ति के लिए कौन से विश्लेषकों का उपयोग करना है, वही है जो मुझे उदाहरणों को खोजने में सबसे कठिन समय था। यह आपके उत्तर में एक बड़ा जोड़ा होगा;) –