써먹는 웹개발

[ElasticSearch] Index생성에서 에러난 이유 본문

Study/Elasticsearch

[ElasticSearch] Index생성에서 에러난 이유

kmhan 2021. 11. 11. 11:21


728x90
반응형

1. 실행 쿼리문

PUT /movie
{
  "settings" : {
   "number_of_shards" : 3,
   "number_of_replicas" : 2
  },
  "mappings" : {
   "_doc" : {
    "properties":  {
     "movieCd": { "type" : "integer" },
     "movieNm": { "type" : "text" },
     "movieNmEn": { "type" : "text" },
     "prdtYear": { "type" : "integer" },
     "openDt": { "type" : "date" },
     "typeNm": { "type" : "keyword" },
     "prdtStatNm": { "type" : "keyword" },
     "nationAlt": { "type" : "keyword" },
     "genreAlt": { "type" : "keyword" },
     "repNationNm": { "type" : "keyword" },
     "repGenreNm": { "type" : "keyword" }
    }
   }
  }
}

 

2. 에러 메시지
{ "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 }

3. 원인 및 해결방법
7.x부터 인덱스에 여러개의 타입을 생성할 수 없기 때문에 위 요청에서 타입인 _doc을 넣는 것은 무의미하기 때문에 발생하는 에러이다. 그래서 _doc 부분을 제거한 후 스키마 매핑값을 요청한다면 정상적으로 작동하게 된다.

 

4. 수정 후에 실행 쿼리문

PUT /movie
{
  "settings" : {
   "number_of_shards" : 3,
   "number_of_replicas" : 2
  },
  "mappings" : {
    "properties":  {
     "movieCd": { "type" : "integer" },
     "movieNm": { "type" : "text" },
     "movieNmEn": { "type" : "text" },
     "prdtYear": { "type" : "integer" },
     "openDt": { "type" : "date" },
     "typeNm": { "type" : "keyword" },
     "prdtStatNm": { "type" : "keyword" },
     "nationAlt": { "type" : "keyword" },
     "genreAlt": { "type" : "keyword" },
     "repNationNm": { "type" : "keyword" },
     "repGenreNm": { "type" : "keyword" }
    }
  }
}

 

출처: https://needneo.tistory.com/58 [네오가 필요해]

728x90
반응형


Comments