2013-12-16 15 views
7

यह कहने के लिए खेद है लेकिन ईएस दस्तावेज (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index.html) मुझे भ्रमित कर रहा है।लोचदार खोज को समझना

धन्यवाद शब्दकोष के लिए मैं डेटाबेस, टेबल और पंक्ति के लिए शब्दों को समझने, लेकिन मैं प्रलेखन की पर्याप्त वर्गों पढ़ लिया है और मैं के लिए जवाब नहीं मिल सकता है:

  • मैं क्यों number_of_shards और number_of_replicas जोड़ने के लिए कर की जरूरत है इंडेक्स बनाने के लिए? मैंने यहां http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules.html देखा लेकिन विडंबना यह है कि :/
  • मेरे पास 2 प्रतिकृतियों के साथ 3 शर्ड्स कैसे हो सकते हैं? यदि शब्दावली कुछ भी करने के लिए है, तो यह असंभव नहीं होना चाहिए कि एक शार्ड "एक ल्यूसीन उदाहरण है"?
  • यदि मैं बाद में अधिक नोड्स जोड़ता हूं तो मैं इन मानों को नए नोड्स को विस्तारित करने के लिए कैसे बदल सकता हूं?
  • ईएस में शेरिंग काम कैसे करता है?
  • प्रतिकृति ईएस में कैसे काम करती है?
  • मैं शेर्डिंग का प्रबंधन कैसे कर सकता हूं? मैं समझता हूं कि यह ऑटो जॉइन है (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-configuration.html#cluster-name) लेकिन मैं प्रतिकृतियों और शर्ड्स के बीच अंतर को कैसे परिभाषित करूं?
  • मैं प्रतिकृति सेट कैसे प्रबंधित कर सकता हूं? अर्थात। मैं प्रतिकृतियां कैसे जोड़ूं, प्राइमरी आदि को बढ़ावा दूं?

संदर्भ के लिए मैं इन कड़ियों पहले पढ़ें:

कि जानकारी दस्तावेज में मौजूद है, तो फिर मैं अगर तुम मुझे की ओर इंगित कर सकते हैं बहुत आभारी होंगे यह।

संपादित करें:

मैं भी अनिश्चित कैसे स्वत: खोज एक वितरित नेटवर्क पर काम करता है हूँ। छोटे सार्वजनिक नेटवर्क को पिंग करने के बारे में संक्षेप में यह सही तरीके से कैसे जुड़ता है जो संभवतः दुनिया के दूसरी तरफ हो सकता है?

+3

इस उत्तर एक निष्पक्ष तरीके से चला जाता है का पालन करें: http://stackoverflow.com/questions/15694724/shards-and-replicas-in-elasticsearch – Sammaye

उत्तर

13

कृपया अपने अंक के उत्तरों के लिए नीचे देखें।

  • मैं करता हूँ की आवश्यकता क्यों सूचकांक निर्माण के लिए number_of_shards और number_of_replicas जोड़ने के लिए करते हैं? मैं यहाँ देखने के http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules.html किया, लेकिन विडंबना यह है कि यह उन दो सेटिंग्स बाहर छोड़ देता है:/

आप नहीं है "" करने के लिए, लेकिन आप शायद चाहिए में विशेष रूप से करने के लिए उत्पादन में चाहते हैं। डिफ़ॉल्ट पांच शर्ड्स और एक प्रतिकृति है।

परिभाषित प्रतिकृतियों की संख्या केवल आपके पूरे इंडेक्स को आपके लोचदार खोज क्लस्टर में सभी नोड्स में दोहराया गया है। इसे आरडीबीएमएस डेटाबेस की कई पढ़ी गई प्रतियों के रूप में सोचें (लेकिन इस मामले में, हम सभी प्रतियां पढ़ और लिखते हैं)।

एक शार्ड मैं कितनी बार विभाजित करता हूं, या एक सूचकांक शेड करता हूं। तो, मेरे पास एक शेड के साथ एक इंडेक्स हो सकता है, या मेरे पास एकाधिक शर्ड्स वाला इंडेक्स हो सकता है। प्राथमिक कुंजी द्वारा आरडीबीएमएस डेटाबेस को सहेजने के लिए यह अवधारणा में समान है, लेकिन समान नहीं है।

तो, इंडेक्स में आपके पास मौजूद शर्ड्स की कुल संख्या संख्या_of_shards और number_of_replicas का उत्पाद है।

जब आप कोई खोज करते हैं, तो लोचदार खोज आपकी अनुक्रमणिका में शर्ड्स वाले सभी संभावित नोड्स को आपकी खोज वितरित करेगी और आपके लिए परिणाम एकत्र करेगी। आप इसे मानचित्र के रूप में सोच सकते हैं/नक्शा कम कर सकते हैं जहां नक्शा प्रत्येक शार्ड को खोज भेज रहा है और कम परिणाम परिणाम एकत्र कर रहा है।

इसके अलावा, आप किसी भी समय प्रतिकृति संख्या_of_replicas को बदल सकते हैं, लेकिन आप number_of_shards को कभी भी नहीं बदल सकते हैं। यह इंडेक्स निर्माण पर सेट किया जाना चाहिए।

  • मेरे पास 2 प्रतिकृतियों के साथ 3 शर्ड्स कैसे हो सकते हैं? यदि शब्दावली कुछ भी करने के लिए है, तो यह असंभव नहीं होना चाहिए कि शार्ड "एक ल्यूसीन उदाहरण है"?

मैं ऊपर ज्यादातर इस जवाब देता है लगता है, लेकिन यह याद रखना होगा कि elasticsearch मुख्य रूप से खोज करने के लिए एक वितरित अभिकलन समाधान है महत्वपूर्ण है। हम काम को कई शर्ड्स और संभवतः मशीनों तक विभाजित कर रहे हैं।

  • अगर मैं अधिक नोड्स बाद में मैंने इन मानों नई नोड्स अवधि के लिए कैसे बदल सकते हैं जोड़ सकता हूँ?

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

  • ईएस में शेर्डिंग कैसे काम करता है?

देखें ऊपर

  • कैसे प्रतिकृति सेट ES में काम करता है?

ऊपर

आपको इसे सक्रिय रूप से "प्रबंधित" करने की आवश्यकता नहीं है। जैसा कि पहले बताया गया है, शेडिंग और इंडेक्स सृजन पर परिभाषित अन्य सभी चीजों को क्लस्टर के भीतर नए नोड्स में प्रचारित किया जाता है।

आप इस तरह प्रतिकृतियां और टुकड़े को परिभाषित:

{ 
    "settings": { 
     "index": { 
      "number_of_shards": 20, 
      "number_of_replicas": 1 
     } 
    }, 
    "mappings": { 
     "some_type": { 
      "properties": { 
       "some_field": { 
        "type": "long" 
       } 
      } 
     } 
    } 
} 
  • मैं प्रतिकृति सेट का प्रबंधन कैसे कर सकते हैं? अर्थात। मैं प्रतिकृतियां कैसे जोड़ूं, प्राइमरी आदि को बढ़ावा दूं?

    http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-update-settings.html

    मैं सिर्फ अपने संपादित देखा, कृपया नीचे देखें:

आपको लगता है कि अद्यतन सूचकांक एपीआई के माध्यम से, इस विशेष मामले के लिए प्रलेखन यहाँ वहाँ साइट पर पाया जाता है

  • मुझे यह भी पता नहीं है कि वितरित नेटवर्क पर ऑटो-डिस्कवरी कैसे काम करती है।

YML कॉन्फ़िग फ़ाइल में आप इस तरह यूनिकास्ट सेट:

discovery.zen.ping.multicast.enabled: false 
#discovery.zen.minimum_master_nodes: 3 
discovery.zen.ping.unicast.hosts: ["ip.add.r.ess", "ip.add.r.ess"] 

बीच सेटिंग एक महत्वपूर्ण सेटिंग है, लेकिन मैं इसे यहाँ से बाहर टिप्पणी की।उस संख्या को हमेशा (मास्टर नोड्स/2) +1 की संख्या होना चाहिए। यह विभाजित मस्तिष्क स्थितियों से बचने के लिए है। आम तौर पर मैं योग्यता के लिए सभी नोड्स सेट करता हूं।

ये सेटिंग्स यूनिकास्ट के लिए हैं, जो मुझे लगता है कि आप अपने प्रश्न के साथ जा रहे हैं, मल्टीकास्ट नहीं।

+1

तो अगर मैं आपको समझता हूं कि दाहिनी ओर एक प्रतिलिपि नहीं है तो यह डेटा है, आईडी की एक श्रृंखला है, (इस संबंध में एसक्यूएल और मोंगोडीबी के समान), लेकिन एक प्राथमिक शार्ड फिर से विभाजित नहीं किया जा सकता है जिसका अर्थ है कि अगर मैं अपना वितरण करना चाहता हूं आगे पढ़ें मुझे फिर से बनाना है। आपको सभी सेटिंग्स के विवरण के लिए उत्तर वोट मिलता है और, धन्यवाद :) – Sammaye

6

संक्षेप में, एक सूचकांक shards में टूट गया है। शार्ड्स को दोहराया जा सकता है, जिसका अर्थ है कि एक ही क्लस्टर में एक ही शार्ड की कई प्रतियां मौजूद हो सकती हैं। तो यदि किसी सूचकांक में 3 शर्ड्स और 2 प्रतिकृतियां हैं, तो इसका मतलब है कि आपके पास नौ शर्ड्स हैं जिनमें से छह में तीन मास्टर शर्ड्स की प्रतिकृतियां हैं।

ईएस, क्लस्टर और उनके प्रतिकृति को क्लस्टर में संतुलित करने का प्रयास करेगा ताकि अगर कोई नोड नीचे जाये तो यह उस नोड पर प्रतिकृतियों के मास्टर शर्ड्स से असफल हो सकता है। यह कुछ लोगों को भ्रमित कर सकता है: लोचदार खोज में एक मास्टर वास्तविक नोड नहीं, shards को संदर्भित करता है। तो एक नोड में प्रतिकृति और मास्टर शर्ड्स का मिश्रण हो सकता है।

यदि आप लुसीन दुनिया से आते हैं, तो ल्यूसीन इंडेक्स एक लोचदार खोज सूचकांक के समान नहीं है। एक लोचदार खोज सूचकांक प्रकार, मैपिंग और दस्तावेजों के साथ अनुक्रमित दस्तावेज़ों का एक तार्किक समूह है। डेटाबेस स्कीमा के समान ही कम। दूसरी तरफ एक ल्यूसीन इंडेक्स कई फाइलों का एक समूह है जिसमें अनुक्रमित डेटा होता है। जब लोचदार खोज इंडेक्स बनाता है, तो यह कई ल्यूसीन इंडेक्स (प्रत्येक फ़ील्ड और शेड के लिए एक) बनाता है और जब यह प्रतिलिपि बनाता है, तो यह मूल रूप से इन ल्यूसीन इंडेक्स की फ़ाइलों की प्रतिलिपि बना रहा है।

आप इंडेक्स के लिए शर्ड्स की संख्या नहीं बदल सकते हैं लेकिन आप प्रतिकृतियों की संख्या बदल सकते हैं। आम तौर पर जब आप अधिक शर्ड्स प्राप्त करने की आवश्यकता होती है तो आप एक नई अनुक्रमणिका बनाते हैं और डेटा को पुन: संशोधित करते हैं।

शार्ड प्रबंधन के मामले में शार की संख्या पर निर्णय लेने से परे, डिफ़ॉल्ट रूप से प्रबंधित करने के लिए बहुत कुछ नहीं है और ईएस अपने आप से बहुत अच्छी समन्वयकारी चीजें हैं, एक बार आप बेहतर तरीके से एक बार बेहतर हो सकते हैं यह कैसे काम करता है की समझ। डिफ़ॉल्ट अधिकांश के लिए बहुत ठीक हैं। क्लस्टर प्रबंधन के मामले में, आप इंडेक्स उपनामों का उपयोग करते हुए, नियंत्रित तरीके से नोड्स को बंद करने, प्रतिलिपि की संख्या बदलने आदि के संदर्भ में एपीआई के माध्यम से बहुत कुछ कर सकते हैं।

ऑटोोडिसवरी के लिए, ES स्थानीय नेटवर्क मल्टीकास्ट का उपयोग करता है चूक। आप यूनिकास्ट पर स्विच कर सकते हैं और आप शायद दुर्घटनाओं को रोकने के लिए डिफ़ॉल्ट क्लस्टनाम नाम बदलना चाहते हैं (अनजान क्लस्टर बनाने वाले कॉफ़ीशॉप में कुछ मज़ा आया था)। आप शायद वैश्विक स्तर पर क्लस्टर नहीं करना चाहते हैं। मुझे यह अच्छा नहीं लगता है।

+0

हाँ आप दूसरा अनुच्छेद एक बिट था जो वास्तव में मुझे भ्रमित कर रहा था, मैंने मोंगो डीबी जैसी भौतिक मशीनों के बारे में सोचा था, थोड़ा बमर मुझे सूचकांक में सुधार करना होगा यदि मुझे गंभीर स्पाइक मिलती है और उसे आवश्यकता होती है मेरे पढ़ने को आगे वितरित करें। हे हाँ हाँ क्लस्टर नाम और प्रसारण के साथ समस्या मेरा विचार भी था। +1 – Sammaye

+0

आप शर्ड्स/इंडेक्स समस्या की निश्चित संख्या को कम करने के लिए उपनाम का उपयोग कर सकते हैं। यह आपको पूछताछ करते समय इंडेक्स के एक समूह के रूप में एक सूचकांक के रूप में पूछने की अनुमति देता है। उदाहरण के लिए लॉगस्टैश हर दिन/सप्ताह/महीने में नए सूचकांक (और shards) बनाने के लिए इसका उपयोग करता है। यह आपको क्षैतिज स्केलेबिलिटी प्रदान करता है और वहां कुछ ऐसे हैं जो सैकड़ों नोड्स के साथ पेटबाइट स्केल पर इसका उपयोग करते हैं। क्लस्टरिंग एक समस्या का इतना अधिक नहीं है और पसंद की एक बहुतायत है। डिफ़ॉल्ट केवल एक निजी नेटवर्क में सुविधाजनक व्यवहार प्रदान करता है लेकिन यदि आप इसे पसंद नहीं करते हैं तो आप इसे अलग-अलग कॉन्फ़िगर कर सकते हैं। –

1

यह एक काफी घटना है कि आपके प्रश्नों का 80% हिस्सा वीडियो प्रस्तुति शे Banon (ElastiSearch के creater) द्वारा दिए गए जवाब में कर रहे हैं। यद्यपि यह प्रस्तुति कहीं और कहीं भी मिल सकती है। उम्मीद है की यह मदद करेगा।

http://www.infoq.com/presentations/ElasticSearch 

यह वीडियो एक सा कम संकल्प है, इसलिए यदि आप चाहते हैं प्रस्तुति में दिखाया गया कोड इस

https://github.com/kimchy/talks/tree/master/2011/wsnparis 
संबंधित मुद्दे