2015-09-30 4 views
8

यहाँ के माध्यम से थोक सूचकांक एपीआई मेरा अनुरोध है:Elasticsearch बाकी endpoint

POST /_bulk 
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } } 
{"firstname":"first_name1","lastname":"last_name1"}, 
{"firstname":"first_name2","lastname":"last_name2"}, 
{"firstname":"first_name3","lastname":"last_name3"}} 

यहाँ त्रुटि है:

{ "error": "IllegalArgumentException[Malformed action/metadata line [3], expected START_OBJECT or END_OBJECT but found 

[VALUE_STRING]]", "status": 500 }

मूल रूप से, प्रत्येक दस्तावेज़ { "firstname" है: ___, "उपनाम": ____} मैं उन्हें एक मूल क्षेत्र में लपेटना नहीं चाहता हूं। मैं मूल रूप से क्या लापता हूं?

+0

यह भी एक सहायक, संबंधित लिंक है थोक-अनुक्रमण-दस्तावेज़-बिना-प्रदान-आईडी-उपयोग-php-api/25521/5 – phirschybar

उत्तर

12

आप बस दूसरे और तीसरे दस्तावेजों के लिए एक कार्य लाइन वंचित हो रहे हैं, इस तरह का प्रयास करें: https://discuss.elastic.co/t/:

POST /_bulk 
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } } 
{"firstname":"first_name1","lastname":"last_name1"} 
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "2" } } 
{"firstname":"first_name2","lastname":"last_name2"} 
{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "3" } } 
{"firstname":"first_name3","lastname":"last_name3"} 
+3

[अपने आप को दोहराएं] [https://www.elastic.co/guide/en/elasticsearch/guide/current /bulk.html#_don_8217_t_repeat_yourself) अनुभाग हर समय '' '_index''' और' ''type''' मान को दोहराने से बचने का तरीका सुझाता है। हालांकि, कृपया ध्यान दें कि, * कार्रवाई * प्रत्येक दस्तावेज़ के लिए अभी भी निर्दिष्ट होना चाहिए। –

+0

बेशक, यदि संभव हो तो सीधे यूआरएल में इंडेक्स और टाइप निर्दिष्ट करना बेहतर होता है। यह सिर्फ _bulk कार्रवाई – Val

+1

हां को चित्रित करने के लिए था। इससे पहले, जब मैंने दस्तावेज़ पढ़ा था और सोचा था कि फ़ाइल की शुरुआत में * एक्शन * प्रदान करना मुझे इस उद्देश्य को अच्छी तरह से पूरा करेगा, तो मुझे गलत इंप्रेशन मिला। मैंने सीखा कि मामला मुश्किल तरीका नहीं है। –