반응형
Elasticsearch에서 index를 구성하다보면 매핑정보를 추가하거나 수정하고 싶을때가 있다. 내가 아는 내에서는 한번 생성된 index의 매핑정보를 변경하는건 어렵다. 그래서 reindex를 통해 index의 매핑정보를 변경해줘야한다.
우선 wedul_mapping이라는 인덱스가 있다고 해보자.
매핑 정보는 다음과 같다.
PUT wedul_mapping
{
"mappings": {
"_doc": {
"dynamic": "false",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
}
이때 name에서 keyword필드를 제거하고 age라는 새로운 Integer타입의 필드를 매핑하고 싶은 경우에 wedul_mapping_dump라는 새로운 임시 인덱스를 생성한다.
PUT wedul_mapping_dump
{
"mappings": {
"_doc": {
"dynamic": "false",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "text"
},
"age": {
"type": "integer"
}
}
}
}
}
그리고 기존 wedul_mapping인데스에서 wedul_mapping_dump 인덱스로 reindex를 실행한다.
POST _reindex
{
"source": {
"index": "wedul_mapping"
},
"dest": {
"index": "wedul_mapping_dump"
}
}
그럼 데이터가 모두 변경된 인덱스 wedul_mapping_dump로 복사되면서 매핑정보가 변경된것을 알 수 있다. 그리고 이름이 같은 wedul_mapping인덱스에 다시 옮기려면 wedul_mapping인덱스를 제거하고 변경된 매핑정보로 새로 생성한뒤 다시한번 reindex를 해주면된다. 데이터가 많은 실 환경에서는 reindex 작업의 비용이 크기 때문에 한번 매핑정보를 설정할 때 잘해주는것이 좋을 것 같다.
반응형
'데이터베이스 > Elasticsearch' 카테고리의 다른 글
[번역] Elasticsearch 퍼포먼스 튜닝 방법 - ebay (1) | 2019.06.12 |
---|---|
Elasticsearch template를 일별 index 구성하기 (0) | 2019.06.12 |
Elasticsearch에서 synonyms.txt로 동의어 필터 만들어서 사용하기 (0) | 2019.04.16 |
elasticsearch 7.0 docker 설치 후 변경사항 확인 (0) | 2019.04.12 |
docker logstash 설치 및 log 파일 elasticsearch에 기록 (1) | 2019.01.23 |