Elasticsearch : 루트 매핑 정의에 지원되지 않는 매개 변수가 있습니다. index : 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부터 매핑 유형이 제거되었습니다. 여기에서 자세한 내용을 읽을 수 있습니다.


감사 . typename없이 매핑을 만들 수 있습니까? typename없이 데이터를 삽입하고 싶습니다 {field1, field2 ....} 같은 것 그리고 typeName {field1, field2 ...}와는 다릅니다
Ramesh

1
좋아요 여기 test는 무엇이며 type_name은 무엇입니까?
라 메쉬

6
test인덱스 이름이며 type_name매핑 유형의 이름입니다.
Val

2
이 코드를 복사하십시오. "type": "mapper_parsing_exception", "reason": "루트 매핑 정의에 지원되지 않는 매개 변수가 있습니다. [type_name : {properties = {field1 = {type = integer}, field4, = {search_analyzer = standard, analyzer = autocomplete) , type = string}, field3 = {index = not_analyzed, type = string}, field2 = {type = integer}}}] "
Ramesh Pareek

1
나를 위해, type_name작동하지 않습니다. 나는 elasticsearch-OSS를 사용하고 있습니다 : 7.20 고정 표시기 이미지
Sebastialonso

21

위의 답변이 탄력적 검색 <7.0에서 작동하기를 바라지 만 7.0에서는 문서 유형을 지정할 수 없으며 더 이상 지원되지 않습니다. 이 경우 문서 유형을 지정하면 비슷한 오류가 발생합니다.

Elastic search 7.0과 Nest C # 최신 버전 (6.6)을 사용하고 있습니다. 이 문제를 일으키는 ES 7.0에는 몇 가지 주요 변경 사항이 있습니다. 이는 문서 유형을 지정할 수없고 NEST 버전 6.6에서는 doctype을 사용하기 때문입니다. 따라서 NEST 7.0이 출시 될 때까지이 문제를 해결하려면 베타 패키지를 다운로드해야합니다.

이 링크를 통해 수정하십시오.

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

수정 : NEST 7.0이 출시되었습니다. NEST 7.0은 Elastic 7.0에서 작동합니다. 자세한 내용은 여기 에서 릴리스 정보 를 참조하십시오.


7

Elastic 버전을 확인하십시오.

잘못된 버전의 문서를보고 있었기 때문에 이러한 문제가 발생했습니다.

여기에 이미지 설명 입력


4

ES 7부터 매핑 유형이 제거되었습니다. 여기에서 자세한 내용을 읽을 수 있습니다.

Ruby On Rails를 사용하는 경우 제거해야 할 수 있습니다. 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

위의 curl 명령에 대한 분석은 다음과 같습니다.

PUT /manzanaIndex
{
    "mappings":{
        "properties":{
                "city":{
                    "type": "text"
                }
        }
    }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.