मैं एक स्वचालित रूप से जेनरेट किए गए दस्तावेज़ आईडी के साथ, अपलोड नामक इंडेक्स में एक नया लोचदार खोज दस्तावेज़ बनाने का प्रयास कर रहा हूं। मैं नए दस्तावेज़ को /uploads/_doc/ पर पोस्ट करके ऐसा कर रहा हूं। इलास्टिक्स खोज हालांकि अपलोड को अस्वीकार कर रहा है, क्योंकि यह 400 खराब अनुरोध की स्थिति के साथ एक HTTP प्रतिक्रिया देता है।

Elasticsearch को लगता है कि मैं एक नया मैपिंग प्रकार बनाने का प्रयास कर रहा हूं, क्योंकि प्रतिक्रिया के मुख्य भाग में त्रुटि संदेश है

[अपलोड] में मैपिंग अपडेट को अस्वीकार करना क्योंकि अंतिम मैपिंग में 1 से अधिक प्रकार होंगे: [_doc, अपलोड]

मैं एक नया मैपिंग प्रकार बनाने का प्रयास नहीं कर रहा हूं। मुझे पता है कि हर इंडेक्स में अब केवल एक ही हो सकता है मानचित्रण प्रकार.

मैं डेबियन पर इलास्टिक्स खोज 6.4.2 का उपयोग कर रहा हूं। मैं HTTP अनुरोध भेजने और HTTP प्रतिक्रिया प्राप्त करने के लिए libcurl का उपयोग कर रहा हूं।

Elasticsearch एक मैपिंग प्रकार जोड़ने के प्रयास के रूप में मेरे अनुरोध की व्याख्या क्यों कर रहा है? मैं एक नया दस्तावेज़ बनाने के बजाय जो कर रहा हूं उसे कैसे बदलूं।


curl का उपयोग करने से पता चलता है कि इंडेक्स में वर्तमान में एक मैपिंग प्रकार है, जिसे uploads कहा जाता है:

curl http://localhost:9200/uploads?pretty
{
  "uploads" : {
    "aliases" : { },
    "mappings" : {
      "uploads" : {
        "properties" : {
        ...
        }
      }
    },
    "settings" : {
      "index" : {
        ...
        "provided_name" : "uploads"
      }
    }
  }
}
0
Raedwald 7 पद 2018, 15:15

1 उत्तर

सबसे बढ़िया उत्तर

आप गलत यूआरएल पर पोस्ट कर रहे हैं। _doc का उपयोग करने के बजाय URL को अनुक्रमणिका नाम और दस्तावेज़ प्रकार देना चाहिए।

आपके मानचित्रण के अनुसार आपकी uploads अनुक्रमणिका में एक uploads दस्तावेज़ प्रकार है:

{
  "uploads" : {                   <--- index name
    "aliases" : { },
    "mappings" : {
      "uploads" : {              <-----doc_type name
        "properties" : {
        ...
        }
      }
    }

इसलिए आपको इस दस्तावेज़ प्रकार का उपयोग करना चाहिए न कि _doc का। यानी, /uploads/uploads पर पोस्ट करें, /uploads/_doc को नहीं।

2
Raedwald 7 पद 2018, 13:56