그외
-
CSV 기반 Elasticsearch 인덱스 재구성 및 Reindexing2025.06.17
CSV 기반 Elasticsearch 인덱스 재구성 및 Reindexing
기존 products_v1 인덱스를 초기화한 후, CSV 파일을 기반으로 products_v2 인덱스를 생성하고, 해당 데이터를 다시 products_v1 으로 reindex하려고 한다.
이 작업은 Kibana UI와 Dev Tools 콘솔을 통해 진행한다.
CSV 파일 기반 index 생성
kibana -> Analytics -> Machine Learning -> Visualize data from a file
- CSV 파일 업로드
- CSV에 헤더가 있다면 → Override settings → Has header row 체크
- 원하는 인덱스 이름 입력 (products_v2 등)
- 인덱스 생성 완료
Kibana -> Analytics -> Discover
Create data view 를 클릭했다면 Discover 에 우리가 추가한 index 를 기반으로 한 dataview 가 생성된다. 굳이 dataview 를 통해 index 를 볼필요가 없다면 data view 를 만들지 않아도 상관없다.
Reindex
products_v2 인덱스가 준비되었으면, 기존 products_v1 데이터를 삭제한 후, products_v2 의 데이터를 기반으로 products_v1 을 다시 채운다.
Kibana -> Management -> Dev Tools
Kibana 의 Dev Tools 를 들어가면 우리가 원하는 스타일의 명령어를 입력할수 있다.
POST products_v1/_delete_by_query
{
"query": {
"match_all": {}
}
}
위 명령어를 통해 products_v1 인덱스의 모든 문서만 삭제한다.
인덱스 자체는 삭제하지 않아야 하므로, DELETE 가 아닌 _delete_by_query 를 사용한다.
위 명령어를 통해 모든 products_v1 의 모든 데이터를 삭제했다면 이제 아래 명령어를 통해 products_v2 기반으로 products_v1 을 reindex 를 하면 된다.
POST _reindex
{
"source": {
"index": "products_v2"
},
"dest": {
"index": "products_v1"
}
}
products_v2의 데이터를 기반으로 products_v1 인덱스를 재구성한다.
기존 products_v1의 매핑 및 설정은 유지되며, 데이터만 덮어씌워진다.
3줄 요약
- CSV 파일 기반 products_v2 인덱스 생성
- 기존 products_v1 문서 삭제 (_delete_by_query)
- products_v2 → products_v1로 데이터 복사 (Reindex)