2015-03-03 6 views
16

मैं Lucene deing 2Gb दस्तावेजों तक ही सीमित बारे में नोट पढ़ें। क्या लोचदार खोज में अनुक्रमित किए जा सकने वाले दस्तावेजों के आकार पर कोई अतिरिक्त सीमाएं हैं?क्या है?

उत्तर

30

Lucene एक बाइट बफर आंतरिक रूप से संबोधित करने के लिए 32 बिट पूर्णांकों का उपयोग करता है का उपयोग करता है। परिभाषा के अनुसार यह दस्तावेजों के आकार को सीमित करता है। तो 2 जीबी सिद्धांत में अधिकतम है।

ElasticSearch में:

वहाँ ES GitHub कोड में एक max http request size है, और यह Integer.MAX_VALUE या 2^31-1 के खिलाफ सेट है। तो, मूल रूप से, 2GB HTTP से अधिक थोक अनुक्रमण के लिए अधिकतम दस्तावेज़ आकार है। और इसमें जोड़ने के लिए, ES पूर्ण होने तक HTTP अनुरोध को संसाधित नहीं करता है।

अच्छे व्यवहार:

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

आगे के अध्ययन के लिए इन लिंक का संदर्भ लें:

1) Performance considerations for elasticsearch indexing

2) Document maximum size for bulk indexing over HTTP

+1

अधिकतम HTTP अनुरोध आकार के लिए देखें: https://github.com/elastic/elasticsearch /blob/148265bd164cd5a614cd020fb480d5974f523d81/docs/reference/modules/http.asciidoc – vvs14

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