2014-08-31 18 views
5

नहीं बनाये बिना दस्तावेज़ों को पूरी तरह अद्यतन करें क्या (आंशिक रूप से नहीं) दस्तावेजों को अद्यतन करने के लिए लोचदार खोज पर कोई तरीका है और यदि यह पहले से मौजूद नहीं है तो नए नहीं बना सकते हैं?मौजूदा

अब तक, मैंने पाया कि _update विधि है, जबकि json अनुरोध शरीर के अंदर एक doc विशेषता गुजर आंशिक रूप से दस्तावेजों को अद्यतन करने के लिए, हालांकि, मैं इस मामले में पूरे दस्तावेज को बदलने के लिए न केवल आंशिक रूप से करना चाहते हैं।

मैंने यह भी पाया है कि, index विधि है, जहां एक PUT अनुरोध भेजने के ठीक काम करता है, हालांकि id अभी तक अनुक्रमित नहीं मामले में एक नया दस्तावेज़ बनाने की है।

op_type पैरामीटर create पर सेट करना इसके बजाय दस्तावेज़ निर्माण को लागू करेगा। मैं सोच रहा था कि update को हमेशा लागू करने का कोई तरीका है और कभी भी create कोई नया नहीं है?

या शायद कोई और तरीका है जो मुझे इस तरह के कार्य को प्राप्त करने की अनुमति देगा?

उत्तर

0

यदि मैं सही ढंग से समझता हूं, तो आप एक दस्तावेज़ को इंडेक्स करना चाहते हैं, लेकिन केवल तभी यह मौजूद है? update का विकल्प पसंद है?

आप इसे अद्यतन API के साथ अधिकतर कर सकते हैं, यह देखते हुए कि आपका मैपिंग लगातार बना हुआ है। _update के साथ, यदि दस्तावेज़ मौजूद नहीं है, तो आपको 404 वापस मिल जाएगा। यदि यह अस्तित्व में है, तो ईएस doc की सामग्री को विलय करेगा, जो भी दस्तावेज़ मौजूद है। यदि आप सुनिश्चित करते हैं कि आप मानचित्रण में सभी फ़ील्ड के साथ एक नया दस्तावेज़ भेज रहे हैं, तो आप इसे प्रभावी ढंग से बदल रहे हैं।

नोट, हालांकि, दस्तावेज़ के बिना आप इसे दो अनुरोधों में कुशलतापूर्वक विलय के बिना कर सकते हैं; HEAD अनुरोध के साथ दस्तावेज़ अस्तित्व के लिए पहली बार जांच। यदि HEAD /idx/type/id सफल है, तो PUT करें। यह अनिवार्य रूप से अद्यतन एपीआई के साथ आंतरिक रूप से हो रहा है, थोड़ा अतिरिक्त ओवरहेड के साथ। लेकिन HEAD वास्तव में सस्ता है क्योंकि यह किसी भी पेलोड को चारों ओर घुमा नहीं रहा है। यह बस एक HTTP 200/404 देता है।

+0

अच्छा ड्रू, हेड लगता है, जैसा कि आपने कहा है कि इन शर्तों में वास्तव में कुशल है। आपकी सहायता के लिए धन्यवाद. – zanona