개발공부/ELASTICSEARCH

[ElasticSearch] _doc error (The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true.)

키크니개발자 2022. 11. 26. 01:09

 

책의 예제를 따라하다가 error 를 발견하였다.

 

아래와 같이 요청하였다.

curl -X PUT "localhost:9200/copyto_index?pretty" -H 'Content-Type: application/json' -d'
{
    "mappings": {
        "_doc": {
            "properties": {
                "first_name": {
                    "type": "text"
                },
                "last_name": {
                    "type": "text"
                }
            }
        }
    }
}'

결과값으로 에러가 발생하였는데 _doc 타입으로 매핑 정의를 할 수 없다는 뜻이었다.

{
  "error" : {
    "root_cause" : [
      {
        "type" : "illegal_argument_exception",
        "reason" : "The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."
      }
    ],
    "type" : "illegal_argument_exception",
    "reason" : "The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."
  },
  "status" : 400
}

좀 더 검색해보니 7.x부터 인덱스에 여러 개의 타입을 생성할 수 없기 때문에 위 요청에서 타입인 _doc 를 넣는 것이 무의미하기 때문에 발생하는 에러라고 하였다. 

현재 실습하고 있는 elasticSearch 버전은 7.6버전이었다.

해결방안으로는 _doc 부분을 제거한 후에 스키마 매핑값을 요청한다면 정상적으로 작동하게 된다고 하였다.

 

그래서 아래와 같이 재요청하였다.

curl -X PUT "localhost:9200/copyto_index?pretty" -H 'Content-Type: application/json' -d'
{
    "mappings": {
        "properties": {
            "first_name": {
                "type": "text"
            },
            "last_name": {
                "type": "text"
            }
        }
    }
}'

 

결과값으로는 잘 설정되는 것을 확인할 수 있었다.

{
	"acknowledged" : true,
    "shards_acknowledged" : true,
  	"index" : "copyto_index"
}

 

 

 

References

- 기초부터 다지는 ElasticSearch 운영 노하우

http://www.yes24.com/Product/Goods/96520155

https://needneo.tistory.com/58

반응형