जबकि mapping
और to_indexed_json
विधियों से संबंधित हैं, वे वास्तव में दो अलग-अलग उद्देश्यों की सेवा करते हैं।
mapping
विधि के प्रयोजन के एक सूचकांक के भीतर दस्तावेज़ गुणों के लिए मानचित्रण परिभाषित करने के लिए है। आप कुछ संपत्ति को "not_analyzed" के रूप में परिभाषित नहीं करना चाहते हैं, इसलिए यह टोकन में विभाजित नहीं है, या संपत्ति के लिए एक विशिष्ट विश्लेषक सेट करें, या (जैसा कि आप उल्लेख करते हैं) इंडेक्सिंग समय बूस्ट कारक। तुम भी multifield संपत्ति, कस्टम प्रारूपों तारीख प्रकार के लिए, आदि को परिभाषित कर सकते
यह मानचित्रण तो जैसे प्रयोग किया जाता है। जब टायर स्वचालित रूप से creates an index for your model।
to_indexed_json
विधि के माध्यम से अपने दस्तावेज/मॉडलों के लिए एक JSON क्रमबद्धता परिभाषित करने के लिए है।
default to_indexed_json
method अपने मानचित्रण परिभाषा का उपयोग करें, केवल गुण मानचित्रण में परिभाषित उपयोग करने के लिए करता है - एक आधार पर है कि आप, मानचित्रण परिभाषित करने के लिए डिफ़ॉल्ट टायर अनुक्रमित केवल परिभाषित मानचित्रण के साथ गुण द्वारा पर्याप्त परवाह करता है, तो।
अब
, जब आप कैसे अपने मॉडल elasticsearch के लिए JSON में श्रृंखलाबद्ध वास्तव में पर एक तंग पकड़ चाहते हैं, तो आप सिर्फ (के रूप में README निर्देश देता है) अपनी to_indexed_json
तरीकों परिभाषित करते हैं।
यह कस्टम MyModel#to_indexed_method
आमतौर पर के बारे में मानचित्रण परिभाषा परवाह नहीं है, और (ActiveRecord के to_json
लाभ, jbuilder के रूप में इस तरह के एक JSON बिल्डर का उपयोग कर, या सिर्फ एक सादे पुराने हैश निर्माण और Hash#to_json
फोन करके खरोंच से JSON क्रमबद्धता बनाता है)।
तो, अपने प्रश्न के अंतिम भाग का जवाब देने के लिए, दोनों mapping
और to_indexed_json
का उपयोग कर पूरी तरह से नहीं कोई विरोध पैदा करेगा, और वास्तव में elasticsearch में उन्नत सुविधाओं का उपयोग करने की आवश्यकता है।
सारांश में:
- आप खोज इंजन
- आप कैसे खोज इंजन अपने दस्तावेज़ों/मॉडल देखता है परिभाषित करने के लिए एक कस्टम
to_indexed_json
विधि का उपयोग करने के लिए अपने मॉडल के लिए मानचित्रण परिभाषित करने के लिए mapping
विधि का उपयोग ।
यदि मैं एक मॉडल के लिए 2 अलग-अलग इंडेक्स रखना चाहता हूं तो क्या होगा। मैं दोनों सूचकांक कैसे परिभाषित करूं? – EmFeld
वर्तमान में टायर में एक मॉडल के लिए आपके पास दो अलग-अलग इंडेक्स नहीं हो सकते हैं। – karmi
धन्यवाद कि यह बहुत स्पष्ट है। और इसलिए 'to_indexed_json' विधि का परिणाम खोज परिणामों के' _source' तत्व में होना चाहिए? – aurels