2013-11-04 18 views
6

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

यदि यह मामला है: सिंक्रनाइज़ करने का कोई तरीका है, ताकि जब मैं अपने प्रश्नों को चलाता हूं, तो मुझे पता है कि वे तैयार और सफल हैं ???

अधिक जानकारी: मैं लोचदार खोज का उपयोग कर रहा हूं और क्वेरी एक साधारण फ़िल्टर है। एकमात्र अजीब चीज यह है कि मैं दस्तावेज़ मॉडल के लिए टेम्पलेट फाइलों का उपयोग कर रहा हूं।

संपादित करें: मैंने प्रविष्टि के बाद आईडी द्वारा दस्तावेज़ प्राप्त करने का भी प्रयास किया है, लेकिन प्रश्न अभी भी यादृच्छिक परिणाम लौटाते हैं (जब तक कि मैं कुछ सेकंड प्रतीक्षा करने के लिए थ्रेड स्लीप नहीं डालता)।

+0

मैं यह है कि आप जावा एपीआई का उपयोग कर रहे मान। इससे मदद मिल सकती है: http://stackoverflow.com/questions/10766562/async-nature-of-elasticsearch-java-api – phoet

+0

नहीं यह आरईएसटी एपीआई है, हालांकि मुझे – gotch4

+0

कारण मिला है, मुझे नहीं लगता कि आप इसका उल्लेख कर सकते हैं कारण, @ gotch4 - मुझे लगता है कि हमें एक ही समस्या है। – Bryan

उत्तर

10

Elasticsearch docs for the index API से:

ताज़ा

सूचकांक के तुरंत बाद संचालन होता है, तो यह है कि दस्तावेज़ तुरंत खोज परिणामों में दिखाई ताज़ा करने के लिए, ताज़ा पैरामीटर सही पर सेट किया जा सकता है। इस विकल्प को सही पर सेट करना केवल सावधानीपूर्वक विचार और सत्यापन के बाद किया जाना चाहिए कि यह सूचकांक और खोज दृष्टिकोण दोनों से खराब प्रदर्शन के लिए का नेतृत्व नहीं करता है। नोट, प्राप्त API का उपयोग कर दस्तावेज़ प्राप्त करना पूरी तरह रीयलटाइम है।

यही कारण है कि मेरे प्रश्न अजीब परिणाम लौट रहे थे। क्योंकि अनुक्रमण कभी-कभी पूरा नहीं हुआ था। इसके अलावा, यह एक ताज़ा एक प्रविष्टि का हिस्सा है, using the _refresh endpoint के रूप में नहीं करने के लिए संभव है:

$ curl -XPOST 'http://localhost:9200/twitter/_refresh' 
संबंधित मुद्दे