2012-07-26 19 views
20

का उपयोग Tire दस्तावेज़ पढ़ते समय, मैं धारणा है कि आप या तो mapping या to_indexed_json तरीकों का उपयोग करना चाहिए के बाद से नीचे (मेरी समझ था ..) mapping था to_indexed_json को खिलाने के लिए प्रयोग किया जाता है।ElasticSearch और टायर: मानचित्रण और to_indexed_json

समस्या यह है कि मुझे कुछ ट्यूटोरियल मिले जहां दोनों का उपयोग किया जाता है। क्यूं कर?

असल में, मेरा ऐप to_indexed_json के साथ अभी काम करता है लेकिन मुझे पता नहीं लगा सकता कि कुछ विशेषताओं के बूस्ट वैल्यू को कैसे सेट किया जाए (इसलिए कारण मैंने मैपिंग को देखना शुरू किया) और मैं सोच रहा था कि दोनों का उपयोग करना होगा कुछ संघर्ष बनाओ।

उत्तर

49

जबकि 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 में उन्नत सुविधाओं का उपयोग करने की आवश्यकता है।

सारांश में:

  1. आप खोज इंजन
  2. आप कैसे खोज इंजन अपने दस्तावेज़ों/मॉडल देखता है परिभाषित करने के लिए एक कस्टम to_indexed_json विधि का उपयोग करने के लिए अपने मॉडल के लिए मानचित्रण परिभाषित करने के लिए mapping विधि का उपयोग ।
+1

यदि मैं एक मॉडल के लिए 2 अलग-अलग इंडेक्स रखना चाहता हूं तो क्या होगा। मैं दोनों सूचकांक कैसे परिभाषित करूं? – EmFeld

+0

वर्तमान में टायर में एक मॉडल के लिए आपके पास दो अलग-अलग इंडेक्स नहीं हो सकते हैं। – karmi

+0

धन्यवाद कि यह बहुत स्पष्ट है। और इसलिए 'to_indexed_json' विधि का परिणाम खोज परिणामों के' _source' तत्व में होना चाहिए? – aurels

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