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

或者

![在这里插入图片描述]( https://img-blog.csdnimg.cn/20200727182535989.png?x-oss-process=image/watermark ,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2ExMzU2OGhraQ==,size_16,color_FFFFFF,t_70)

二、离线安装
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

posted @ 2021-07-08 15:18  L1ZM  阅读(1050)  评论(0)    收藏  举报