centos7 安装 elasticdump(在线安装)elasticsearch 数据迁移
node-v10.14.2软件包
链接:https://pan.baidu.com/s/1ng5mRZQqhxU4xYGXl8xr9Q
提取码:rmim
一.在线安装
1. 安装npm,node
elasticsearch-dump可用ES的数据备份、迁移、同步操作等
wget https://nodejs.org/dist/v10.14.2/node-v10.14.2-linux-x64.tar.xz
tar -xf node-v10.14.2-linux-x64.tar.xz -C /usr/local/
mv /usr/local/node-v10.14.2-linux-x64/ /usr/local/node
echo 'export PATH=/usr/local/node/bin:$PATH' >/etc/profile.d/nodejs.sh
source /etc/profile.d/nodejs.sh
source /etc/profile
[root@oracle bin]# node --version
v10.14.2
[root@oracle bin]# npm --version
6.4.1
安装elasticdump :
全局可用:
npm install elasticdump -g
elasticdump --version
用户本地可用:
npm install elasticdump
./bin/elasticdump
--版本的查询:
# elasticdump --version
4.1.2
数据迁移:
#拷贝analyzer分词
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=analyzer
#拷贝映射
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=mapping
#拷贝数据
elasticdump \
--input=http://production.es.com:9200/my_index \
--output=http://staging.es.com:9200/my_index \
--type=data
或者

二、离线安装
npm-cache.tar软件包
链接:https://pan.baidu.com/s/1RicL1OM75Bh_lArzyEUw1g
提取码:ba0b
基础环境
node:v10.14.2
npm:6.4.1
版本最好和我相似,不然可能出现兼容问题
模块缓存导入安装:
# 解压
tar -xvf npm-cache.tar
# 执行安装命令
npm install --cache /root/.npm --optional --cache-min 99999999999 --shrinkwrap false elasticdump
# 建立文件软连接到系统命令
ln -s /root/node_modules/elasticdump/bin/elasticdump /usr/bin/elasticdump
# 验证
elasticdump --version

2,生产环境导出到测试环境
1)导出分词器,导出分词器的时候要特别注意,我们只能根据索引单个导入,不能全部导出,全部导出会出现索引不存在的错误:
elasticdump --input=http://ip:9200 --output=http://127.0.0.1:9200/ --type=analyzer --all=true
该全部导出导入的命令会如下错误:
Error Emitted => {"root_cause":[{"type":"action_request_validation_exception","reason":"Validation Failed: 1: index is missing;"}],"type":"action_request_validation_exception","reason":"Validation Failed: 1: index is missing;"}
所以后面改为按索引分别导入则可以:
elasticdump --input=http://ip:9200/applog --output=http://127.0.0.1:9200/applog --type=analyzer
elasticdump --input=http://ip:9200/cms_article --output=http://127.0.0.1:9200/cms_article --type=analyzer
elasticdump --input=http://ip:9200/followup --output=http://127.0.0.1:9200/followup --type=analyzer
坑:再倒入的时候我并不知道到底有多少个索引,如何确定索引的名称?
这里我是直接先导出所有映射mapping到本地,然后找到索引的名称再到各导入分词:
elasticdump --input=D:/mapping.json --output=http://127.0.0.1:9200/ --all=true --type=mapping
疑惑:我这里的索引目前只有三个,如果是多个怎么处理?超过100?
2)导出映射mapping
映射mapping可以直接全部导入导出,直接命令:
elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=mapping
3)导出全部数据data
每个索引下的数据可以全部一次性导入:
elasticdump --input=http://ip:9200/ --output=http://127.0.0.1:9200/ --all=true --type=data
3,总结
1),如果不导入analyzer会怎么样?
我试过如果只导入data和mapping,则数据会导入,mapping会发生变化,最终的结果没有分词的效果。
2),如果不导入mapping也不会有分词的效果。
3),顺序导入最好按照:analyzer,mapping和data这个顺序来,防止出现分词失效的结果。
————————————————
转载来源:本文为CSDN博主「人生匆匆」的原创文章。
原文链接:https://blog.csdn.net/a13568hki/article/details/107616590

浙公网安备 33010602011771号