docker를 이용한 elasticdump 실전 가이드


NodeJS 설치 없이 docker를 이용 elasticdump를 사용하는 실전 가이드 입니다

기본적으로 docker는 설치 되어 있다고 가정하고 설명하겠습니다


준비

  1. docker 이미지 pull

     docker pull elasticdump/elasticsearch-dump
    

케이스별 elasticdump 실행 명령어

  1. ES TO ES index 데이터 10,000건씩 덤프
     docker run --rm -ti elasticdump/elasticsearch-dump \
     --input=http://production.es.com:9200/my_index \
     --output=http://staging.es.com:9200/my_index \
     --type=data \
     --limit=10000
    
  2. ES에서 로컬에 설치한 ES으로 index 데이터 10,000건씩 덤프
     docker run --net=host --rm -ti elasticdump/elasticsearch-dump \
     --input=http://staging.es.com:9200/my_index \
     --output=http://localhost:9200/my_index \
     --type=data \
     --limit=10000
    
  3. ES에서 로컬 저장소에 JSON으로 index 데이터 10,000건씩 덤프 (로컬 JSON 저장 경로 : ~/Documents/elasticdump)
     docker run --rm -ti -v ~/Documents/elasticdump:/tmp:/tmp elasticdump/elasticsearch-dump \
     --input=http://production.es.com:9200/my_index \
     --output=/tmp/my_index_data.json \
     --type=data \
     --limit=10000
    
  4. ES에서 로컬 저장소에 JSON으로 index 데이터 10,000건씩 100만건만 덤프 (로컬 JSON 저장 경로 : ~/Documents/elasticdump)
     docker run --rm -ti -v ~/Documents/elasticdump:/tmp:/tmp elasticdump/elasticsearch-dump \
     --input=http://production.es.com:9200/my_index \
     --output=/tmp/my_index_data.json \
     --type=data \
     --size=1000000 \
     --limit=10000
    
  5. ES에서 로컬 저장소에 1GB 크기 JSON으로 분할하여 index 데이터 10,000건씩 100만건만 덤프 (로컬 JSON 저장 경로 : ~/Documents/elasticdump)
     docker run --rm -ti -v ~/Documents/elasticdump:/tmp:/tmp elasticdump/elasticsearch-dump \
     --input=http://production.es.com:9200/my_index \
     --output=/tmp/my_index_data.json \
     --type=data \
     --fileSize=1024MB \
     --size=1000000 \
     --limit=10000
    
  6. ES QUERY를 이용하여 ES에서 로컬 저장소에 JSON으로 index 데이터 10,000건씩 덤프 (로컬 JSON 저장 경로 : ~/Documents/elasticdump)

    ~/Documents/elasticdump/search_query.json

     {
       "query": { "match_all": {} },
       "_source": ["account_number", "balance"]
     }
    
     docker run --rm -ti -v ~/Documents/elasticdump:/tmp:/tmp elasticdump/elasticsearch-dump \
     --input=http://production.es.com:9200/my_index \
     --output=/tmp/my_index_data.json \
     --type=data \
     --searchBody=@/tmp/search_query.json \
     --limit=10000
    
  7. elasticdump으로 생성한 JSON 파일을 ES에 10,000건씩 복원 (로컬 JSON 파일 경로 : ~/Documents/elasticdump)
     docker run --rm -ti -v ~/Documents/elasticdump:/tmp:/tmp elasticdump/elasticsearch-dump \
     --input=/tmp/my_index_data.json \
     --output=http://production.es.com:9200/my_index \
     --type=data \
     --limit=10000
    
  8. elasticdump로 생성하지 않은 JSON 파일을 ES에 10,000건씩 복원 (로컬 JSON 파일 경로 : ~/Documents/elasticdump)
     docker run --rm -ti -v ~/Documents/elasticdump:/tmp:/tmp elasticdump/elasticsearch-dump \
     --input=/tmp/my_index.json \
     --output=http://production.es.com:9200/my_index \
     --type=data \
     --transform=doc._source="Object.assign({},doc)" \
     --limit=10000
    

Reference