Cane's Blog

Cane

【Linux】Elasticsearch数据迁移

59
2022-03-02

## 方法一:通过 NPM 安装

  1. 下载 && 安装

    wget https://nodejs.org/dist/v10.15.0/node-v10.15.0-linux-x64.tar.xz
    tar -xf node-v10.15.0-linux-x64.tar.xz
  2. 配置环境变量

    vim /etc/profile
    
    ...
    
    PATH=$PATH:/software/node-v10.15.0-linux-x64/bin
  3. 生效配置

    source /etc/profile
  4. 导出

    # 格式
    elasticdump --input {protocol}://{host}:{port}/{index} --output ./test_index.json
    
    # 例子:将 ES 中的 test_index 中的索引导出
    
    # 1. 导出当前索引的 mapping 结构
    elasticdump --input http://192.168.56.104:9200/test_index --output ./test_index_mapping.json --type=mapping
    
    # 2. 导出当前索引下的所有真实数据
    elasticdump --input http://192.168.56.104:9200/test_index --output ./test_index.json --type=data
  5. 导入

    # 创建索引
    curl -XPUT http:192.168.56.104:9200/test_index
    
    # 因为导入的是 mapping,所以设置 type 为 mapping
    elasticdump --input ./test_index_mapping.json --output http://192.168.56.105:9200/ --type=mapping
    
    #因为导入的是 data(真实数据)所以设置 type 为 data 
    elasticdump --input ./test_index.json --output http://192.168.56.105:9200/ --type=data

方法二:通过 Docker 进行安装

# 镜像下载
docker pull taskrabbit/elasticsearch-dump
  1. 通过镜像导出数据到本地

    # 创建一个文件夹用于保存导出数据
    mkdir -p /root/data
    
    # 导出 mapping
    docker run --rm -ti -v /data:/tmp taskrabbit/elasticsearch-dump --input=http://production.es.com:9200/my_index --output=/tmp/my_index_mapping.json --type=mapping
    
    # 导出 data
    docker run --rm -ti -v /root/data:/tmp taskrabbit/elasticsearch-dump --input=http://192.168.56.104:9200/test_index --output=/tmp/elasticdump_export.json --type=data
    
    # 导入 mapping
    docker run --rm -ti -v /data:/tmp taskrabbit/elasticsearch-dump --input=/tmp/my_index_mapping.json --output=http://production.es.com:9200/my_index --type=mapping
    
    # 导入 data
    docker run --rm -ti -v /root/data:/tmp taskrabbit/elasticsearch-dump --input=/tmp/elasticdump_export.json --output=http://192.168.56.104:9200/test_index --type=data
  2. Es 导出到 Es

    # mapping
    docker run --rm -ti taskrabbit/elasticsearch-dump --input=http://production.es.com:9200/my_index --output=http://staging.es.com:9200/my_index --type=mapping
    
    # data
    docker run --rm -ti taskrabbit/elasticsearch-dump --input=http://production.es.com:9200/my_index --output=http://staging.es.com:9200/my_index --type=data