elasticdump는 Elasticsearch 인덱스와 데이터를 내보내거나 가져오기 위한 도구입니다. elasticdump를 사용하면 Elasticsearch 클러스터의 index, document, template 등을 백업하거나 다른 클러스터로 마이그레이션하는 작업을 수행할 수 있습니다. 본 문서에서 elasticdump의 기본 적인 사용법에 대해서 정리하였습니다.
elasticdump install
$ sudo apt update
$ sudo apt install npm
$ npm install elasticdump -g
$ elasticdump --version
6.103.0
(node:16397) NOTE: We are formalizing our plans to enter AWS SDK for JavaScript (v2) into maintenance mode in 2023.
(생략...)
Elasticsearch Index의 데이터를 파일로 가져오기
Index의 documents데이터를 디렉토리에 파일로 가져올 수 있습니다. 현재 Index에 저장된 데이터는 다음과 같습니다.
이제 elasticdump를 이용하여 파일로 가져오겠습니다.
$ elasticdump --input="http://localhost:9200/my-index" --output="./my-index.txt"
위 명령어를 통하여 현재 디렉토리에 my-index.txt 파일로 데이터를 가져왔습니다. 가져온 데이터는 다음과 같습니다.
{"_index":"my-index","_type":"_doc","_id":"RO_7BokBQKytg6noxeXW","_score":1,"_source":{"uid":"1","message":"aaaa","type":"APP","timestamp":1688038455}}
{"_index":"my-index","_type":"_doc","_id":"Ru_7BokBQKytg6noxeXW","_score":1,"_source":{"uid":"3","message":"cccc","type":"DB","timestamp":1688038457}}
{"_index":"my-index","_type":"_doc","_id":"Re_7BokBQKytg6noxeXW","_score":1,"_source":{"uid":"2","message":"bbbb","type":"APP","timestamp":1688038456}}
{"_index":"my-index","_type":"_doc","_id":"R-_7BokBQKytg6noxeXW","_score":1,"_source":{"uid":"4","message":"dddd","type":"APP","timestamp":1688038459}}
{"_index":"my-index","_type":"_doc","_id":"SO_7BokBQKytg6noxeXW","_score":1,"_source":{"uid":"5","message":"eeee","type":"DB","timestamp":1688038459}}
{"_index":"my-index","_type":"_doc","_id":"Se_7BokBQKytg6noxeXW","_score":1,"_source":{"uid":"6","message":"ffff","type":"DB","timestamp":1688038459}}
파일로 가져온 데이터 Elasticsearch로 보내기
앞에서는 elasticsearch에서 데이터를 가져오는 방법을 알아봤습니다. 파일에서 elasticsearch로 전송하는 방법은 input과 output를 반대로 설정해 주면 파일에서 elasticsearch로 데이터를 전송합니다.
elasticdump --input="./my-index.txt" --output="http://localhost:9200/my-index"
A Cluster에서 B Cluster로 데이터 전송하기
이번에는 파일로 가져오지 않고 다른 클러스터로 바로 데이터를 전송하겠습니다.
A Cluster가 "localhost:9200"이고 B Cluster는 "localhost:9400" 일 경우 A Cluster에서 B Cluster로 데이터를 전송해보겠습니다.
elasticdump --input="http://localhost:9200/my-index" --output="http://localhost:9400/my-index"
그밖에 elasticdump 옵션
- --type=analyzer: settings를 내보낸다.
- --type=mapping: mapping을 내보낸다.
- --type=data: documents를 내보낸다 (Default).
- --overwirte: export 파일이 이미 존재한다면 덮어쓰기 한다.
- --limit: 지정한 limit 개수만큼씩 끊어 가져온다. (Default: 100)
- --output-index=${index명}: 백업해 놓은 파일로부터 가져오기 할 때 원래 인덱스가 아닌 원하는 인덱스로 지정해 줄 수 있다.
마지막으로
elasticdump는 적은 데이터를 옮길 때는 편하게 사용할 수 있지만 속도가 매우 느리기 때문에 큰 인덱스의 데이터를 가져오는 것은 추천하지 않습니다. 큰 데이터를 마이그레이션 할 때는 snapshot을 이용하여 특정 인덱스만 가져오는 것을 추천드립니다.
더 자세한 사용방법은 elasticdump github에서 확인할 수 있습니다.
https://github.com/elasticsearch-dump/elasticsearch-dump
'Elasticsearch > Elasticsearch 설정' 카테고리의 다른 글
Elasticsearch install in kubernetes (0) | 2023.07.31 |
---|---|
Elasticsearch 7.10 버전 AWS S3 Snapshot 생성하기(in Kubernetes) (0) | 2023.07.04 |
Elasticsearch의 Index template 설정하기 (0) | 2021.08.24 |
Kibana 윈도우10에 설치하기 (0) | 2021.08.16 |
Elasticsearch 윈도우10에 설치하기 (0) | 2021.08.16 |