इलास्टिसर्च: रूट मैपिंग परिभाषा में असमर्थित पैरामीटर इंडेक्स है: not_analyzed


81

हाय सब मैं स्कीमा टेस्ट बनाने की कोशिश कर रहा हूँ।

PUT /test
{
    "mappings": {
        "field1": {
            "type": "integer"
        },
        "field2": {  
            "type": "integer"
        },
        "field3": {
            "type": "string",
            "index": "not_analyzed"
        },
        "field4": {
            "type": "string",
            "analyzer": "autocomplete",
            "search_analyzer": "standard"
        }
    },
    "settings": {
        bla
        bla
        bla
    }
}

मुझे निम्नलिखित त्रुटि प्राप्त हो रही है

{
    "error": {
        "root_cause": [{
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters: [index : not_analyzed] [type : string]"
        }],
        "type": "mapper_parsing_exception",
        "reason": "Failed to parse mapping [featured]: Root mapping definition has unsupported parameters:  [index : not_analyzed] [type : string]",
        "caused_by": {
            "type": "mapper_parsing_exception",
            "reason": "Root mapping definition has unsupported parameters:  [index : not_analyzed] [type : string]"
        }
    },
    "status": 400
}

कृपया इस त्रुटि को हल करने में मेरी मदद करें

जवाबों:


122

आप लगभग यहाँ हैं, आप बस कुछ चीजें याद कर रहे हैं:

PUT /test
{
  "mappings": {
    "type_name": {                <--- add the type name
      "properties": {             <--- enclose all field definitions in "properties"
        "field1": {
          "type": "integer"
        },
        "field2": {
          "type": "integer"
        },
        "field3": {
          "type": "string",
          "index": "not_analyzed"
        },
        "field4,": {
          "type": "string",
          "analyzer": "autocomplete",
          "search_analyzer": "standard"
        }
      }
    }
  },
  "settings": {
     ...
  }
}

अपडेट करें

यदि आपका सूचकांक पहले से मौजूद है, तो आप इस तरह से अपने मैपिंग को भी संशोधित कर सकते हैं:

PUT test/_mapping/type_name
{
    "properties": {             <--- enclose all field definitions in "properties"
        "field1": {
          "type": "integer"
        },
        "field2": {
          "type": "integer"
        },
        "field3": {
          "type": "string",
          "index": "not_analyzed"
        },
        "field4,": {
          "type": "string",
          "analyzer": "autocomplete",
          "search_analyzer": "standard"
        }
    }
}

अद्यतन :

ES 7 के रूप में, मानचित्रण प्रकार हटा दिए गए हैं। आप यहां अधिक विवरण पढ़ सकते हैं


धन्यवाद । क्या टाइपनेम के बिना मैपिंग बनाना संभव है। मैं टाइपनेम के बिना डेटा डालना चाहता हूं जैसे {फ़ील्ड 1, फ़ील्ड 2 ....} और टाइपनेम जैसा नहीं {फ़ील्ड 1, फ़ील्ड 2 ...}
रमेश

1
यहाँ ठीक है क्या परीक्षण है और type_name क्या है?
रमेश

6
testआपका अनुक्रमणिका नाम है और type_nameआपके मानचित्रण प्रकार का नाम है।
वैल

2
इस कोड को कॉपी पेस्ट किया। यह त्रुटि देता है: "टाइप": "mapper_parsing_exception", "कारण": "रूट मैपिंग परिभाषा में असमर्थित पैरामीटर हैं: [type_name: {properties = {field1 = {type = integer}, field4, = {search_analyzer = standard, विश्लेषक = स्वतः पूर्ण , type = string}, field3 = {index = not_analyzed, type = string}, field2 = {टाइप = पूर्णांक}}}] "
रमेश पारी

1
मेरे लिए, type_nameकाम नहीं कर रहा है। मैं elasticsearch-oss का उपयोग कर रहा हूँ: 7.20 docker की छवि
सेबेस्टियलोनो

21

मुझे उम्मीद है कि उपरोक्त उत्तर लोचदार खोज के लिए काम करता है <7.0 लेकिन 7.0 में हम डॉक्टर प्रकार को निर्दिष्ट नहीं कर सकते हैं और यह अब समर्थित नहीं है। और उस स्थिति में यदि हम डॉक्टर प्रकार निर्दिष्ट करते हैं तो हमें समान त्रुटि मिलती है।

मैं आपको लोचदार खोज 7.0 और नेस्ट सी # नवीनतम संस्करण (6.6) का उपयोग कर रहा हूं। ES 7.0 के साथ कुछ ब्रेकिंग परिवर्तन हैं जो इस समस्या का कारण है। ऐसा इसलिए है क्योंकि हम doc प्रकार निर्दिष्ट नहीं कर सकते हैं और NEST के संस्करण 6.6 में वे doctype का उपयोग कर रहे हैं। तो यह जानने के लिए कि एनआईएलईटी एनईएल 7.0 जारी नहीं किया गया है, हमें उनके बीटा पैकेज को डाउनलोड करना होगा

कृपया इसे ठीक करने के लिए इस लिंक पर जाएं

https://xyzcoder.github.io/elasticsearch/nest/2019/04/12/es-70-and-nest-mapping-error.html

EDIT: NEST 7.0 अब रिलीज़ हो गया है। NEST 7.0 इलास्टिक 7.0 के साथ काम करता है। देखें यहाँ रिलीज नोट्स जानकारी के लिए।


7

अपने इलास्टिक संस्करण की जाँच करें।

मुझे ये समस्या थी क्योंकि मैं गलत संस्करण के दस्तावेज़ देख रहा था।

यहाँ छवि विवरण दर्ज करें


4

ES 7 के रूप में, मानचित्रण प्रकार हटा दिए गए हैं। आप यहां अधिक विवरण पढ़ सकते हैं

यदि आप रूबी ऑन रेल्स का उपयोग कर रहे हैं तो इसका मतलब है कि आपको document_typeअपने मॉडल या चिंता को दूर करने की आवश्यकता हो सकती है।

एक प्रकार के मानचित्रण के विकल्प के रूप में एक समाधान प्रति दस्तावेज़ प्रकार का उपयोग करना है।

इससे पहले:

module Searchable
  extend ActiveSupport::Concern

  included do
    include Elasticsearch::Model
    include Elasticsearch::Model::Callbacks
    index_name [Rails.env, Rails.application.class.module_parent_name.underscore].join('_')
    document_type self.name.downcase
  end
end

उपरांत:

module Searchable
  extend ActiveSupport::Concern

  included do
    include Elasticsearch::Model
    include Elasticsearch::Model::Callbacks
    index_name [Rails.env, Rails.application.class.module_parent_name.underscore, self.name.downcase].join('_')
  end
end

बिल्कुल मेरा मुद्दा! खुशी है कि इस पर डॉक्स पढ़ने के 2 घंटे बिताने के बाद यह एक आसान समाधान था।
bkunzi01

0
PUT /testIndex
{
    "mappings": {
        "properties": {     <--ADD THIS
            "field1": {
                "type": "integer"
            },
            "field2": {  
                "type": "integer"
            },
            "field3": {
                "type": "string",
                "index": "not_analyzed"
            },
            "field4": {
                "type": "string",
                "analyzer": "autocomplete",
                "search_analyzer": "standard"
            }
        }
    },
    "settings": {
        bla
        bla
        bla
    }
}

यहाँ एक समान कमांड है जो मुझे पता है कि काम करता है:

curl -v -H "Content-Type: application/json" -H "Authorization: Basic cGC3COJ1c2Vy925hZGFJbXBvcnABCnRl" -X PUT -d '{"mappings":{"properties":{"city":{"type": "text"}}}}' https://35.80.2.21/manzanaIndex

उपरोक्त कर्ल कमांड के लिए ब्रेकडाउन है:

PUT /manzanaIndex
{
    "mappings":{
        "properties":{
                "city":{
                    "type": "text"
                }
        }
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.