线下es迁移至腾讯云ES实践案例
1、首先我们先要准备好node环境,简便部署满足使用即可
1.1下载node应用包后在本地数据目录解压
# xz -d node-v10.16.3-linux-x64.tar.xz
cd /data;tar -xvf node-v10.16.3-linux-x64.tar
1.2配置本地环境变量##node
vi /etc/profile #将以下内容追加到profile内
export NODE_HOME=/data/node-v10.16.3-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
source /etc/profile ##生效配置
1.3检查环境情况
# node -v
v10.16.3
# npm -v
6.9.0
2、部署elasticsearch-dump工具环境
2.1解压elasticsearch-dump工具包
cd /data;tar -zxvf elasticsearch-dump-master-c7.tar.gz
cd /data/elasticsearch-dump-master
2.2确认elasticsearch-dump工具环境
# ./bin/elasticdump --version
6.14.1
3、准备导出本地es实例索引配置及数据
3.1 使用导出本地文件的方式,同时也可以使用网络实时的迁移方式,需要依赖两端网络互通
# ./bin/elasticdump --input=http://源esIP地址:9200 --output=/data/es_dump_settings.json --type=settings #导出配置信息
| starting dump
| got 1 objects from source elasticsearch (offset: 0)
| sent 1 objects to destination file, wrote 0
| got 0 objects from source elasticsearch (offset: 1)
| Total Writes: 0
| dump complete
# ./bin/elasticdump --input=http://源esIP地址:9200 --output=/data/es_dump_mapping.json --type=mapping #导出mapping信息
| starting dump
| got 1 objects from source elasticsearch (offset: 0)
| sent 1 objects to destination file, wrote 0
| got 0 objects from source elasticsearch (offset: 1)
| Total Writes: 0
| dump complete
# ./bin/elasticdump --input=http://源esIP地址:9200 --output=/data/es_dump_data.json --type=data #导出数据信息
| starting dump
3.3 网络实时的迁移方式,需要依赖两端网络互通,腾讯云es实例支持开通公网虚拟地址以便打通网络。
./bin/elasticdump --input=http://源esIP地址:9200/索引名--output=http://目的esIP地址:9200/索引名 --type=analyzer
./bin/elasticdump --input=http://源esIP地址:9200/索引名 --output=http://目的esIP地址:9200/索引名 --type=mapping
./bin/elasticdump --input=http://源esIP地址:9200/索引名 --output=http://目的esIP地址:9200/索引名 --type=alias
./bin/elasticdump --input=http://源esIP地址:9200/索引名 --output=http://目的esIP地址:9200/索引名 --type=data
3.4 带账号密码的数据迁移
elasticdump --input=http://username:password@192.168.1.2:9200/test --output=http://username@password@192.168.1.3:9200/test --type=内容类型
4、其他补充参考
----------------------------
# 备份
elasticdump --input=http://192.168.1.2:9200/test --output=/opt/esdump/test.json
# 支持星号匹配,以test开头的所有索引数据导出到test.json文件
elasticdump --input=http://192.168.1.2:9200/test* --output=/opt/esdump/test.json
# 还原
elasticdump --input=/opt/esdump/test.json --output=http://192.168.1.3:9200/test
# 还原,不需要指定索引自动插入
elasticdump --input=/opt/esdump/test.json --output=http://192.168.1.3:9200
# 迁移 加入limit限制每次更新的条数,加快更新时间
elasticdump --input=http://10.130:9200/rdms--limit=1000 --output=http:/localhost:9200/rdms
# 带账号密码的数据迁移
elasticdump --input=http://username:password@192.168.1.2:9200/test --output=http://username@password@192.168.1.3:9200/test
# 导出Mapping信息
elasticdump --ignore-errors=true --scrollTime=120m --bulk=true --input=http://10.10.20.164:9200/xmonitor-2015.04.29 --output=http://192.168.100.72:9200/xmonitor-prd-2015.04.29 --type=mapping
# 根据查询条件导出
nohup elasticdump --ignore-errors=true --scrollTime=120m --bulk=true --input=http://10.248.161.31:9200/ams_data --output=/usr/elasticsearch/output_datas_data_week0708_0714.json --type=data --searchBody '{"query":{"bool":{"must":{"range":{"created_at":{"from":"2017-07-08 00:00:00","to":"2017-07-14 23:59:59","format":"yyyy-MM-dd HH:mm:ss","include_lower":true,"include_upper":true}}}}}}' >/usr/elasticsearch/output_data/result5.log &