2013-05-23 13 views
12

कहें कि मेरे पास एक ऐसा क्षेत्र है जिसमें केवल मूल्यों का एक सीमित सेट हो। क्या यह किसी प्रकार के ईएनएन के रूप में स्टोर करने के लिए अधिक कुशल (सूचकांक, और/या भंडारण-वार) नहीं होगा?लोचदार खोज enum फ़ील्ड

क्या लोचदार खोज में ऐसी कोई संभावना है?

एक उदाहरण राज्य मशीन में राज्यों का नाम होगा।

+0

क्या ईएनएन प्रकार को त्रुटि की फेंकने की आवश्यकता नहीं है यदि टाइप-बाधा को उस मान में प्रवेश करने के प्रयास से तोड़ दिया गया था जो संख्यात्मक प्रकार का हिस्सा नहीं है? – LeeGee

उत्तर

13

हां यह होगा। जब आप पूर्ण पाठ फ़ील्ड को अनुक्रमित करते हैं, तो Elasticsearch फ़ील्ड की लंबाई, और फ़ील्ड में प्रत्येक शब्द की स्थिति और आवृत्ति जैसी जानकारी भी अनुक्रमणित करता है।

ये ईएनएन मानों के लिए अप्रासंगिक हैं, और इसे पूरी तरह से बाहर रखा जा सकता है।

वास्तव में, यदि आप नक्शा अपने क्षेत्र तो {"index": "not_analyzed"} के रूप में, सही मूल्य है कि आप इसे का विश्लेषण करने की कोशिश कर के बिना प्रदान भंडारण के अलावा, यह भी अतिरिक्त जानकारी है कि मैं उपर्युक्त के भंडारण अक्षम करता है।

+0

हाँ, मुझे पता है कि आप क्या कह रहे हैं। हालांकि, मैं डेटा को और भी कम करना चाहता हूं। यदि फ़ील्ड में तीन संभावित मानों में से एक है, लेकिन मान बहुत लंबे तार हैं, उन्हें अधिक से अधिक भंडारित करना अभी भी अपर्याप्त है, भले ही वे "विश्लेषण" न हों। इसके अलावा, मैं उस फ़ील्ड के संभावित मानों को सीमित करना चाहता हूं। – eran

+4

ठीक है हाँ और नहीं। सबसे पहले, इंडेक्स में, प्रत्येक स्ट्रिंग केवल एक बार संग्रहीत होती है। इस तरह एक उलटा सूचकांक काम करता है। आपके पास "शब्द" है: [दस्तावेज़ों की सूची जिसमें शब्द शामिल है]। मान _source फ़ील्ड के भीतर बार-बार दिखाई देगा, लेकिन यह स्वचालित रूप से संपीड़ित हो जाएगा, इसलिए संभवतः आपके पास जितना प्रभाव हो उतना प्रभाव नहीं होगा। – DrTech

+2

बस स्पष्ट करने के लिए: यदि आप अभी भी LONGNAME -> ENUM मैपिंग करना चाहते हैं, तो आपको इसे अपने एप्लिकेशन में करना होगा। – DrTech

2

अपने ऐप में हैश नक्शा { "enumVal1" => 1, "enumVal2" => 2, "enumValX" => 3 } का उपयोग करें और फिर ईएस में केवल हैशैप के मानों का उपयोग करें, यह अंतरिक्ष को बचा सकता है।

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