책의 예제를 따라하다가 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 운영 노하우
반응형
'개발공부 > ELASTICSEARCH' 카테고리의 다른 글
[ElasticSearch] multi fields란? (1) | 2022.12.06 |
---|