内容纲要
概要描述
使用传统的方式来迁移或备份 Search 数据会比较麻烦,本文介绍一种利用 esm 来快速进行数据迁移的方式。
详细说明
本文将通过一个小实验来说明 esm 的使用方式。
实验目标
将 172.22.20.1(源主机)search 中的 "ticket_info" 这个 index 迁移至 172.22.44.91(目标主机)中。
其中有 2 个前提需要注意:
- 源主机和目标主机对应开源的 ElasticSearch 的版本均为 5.4.1
- 源主机和目标主机都没有开启安全认证。
如果不满足这两个前提,本文所述的方法能否成功还有待进一步验证。
实验步骤
-
由于源主机的 search 中使用了 analysis-hanlp 和 analysis-pinyin 这两个插件,而目标主机的 search 中没有安装,所以需要先将这两个插件拷贝至目标集群 search 的三个节点上。
在172.22.20.1(源主机)上执行以下命令:
scp -r /etc/search1/instancegroup1/conf/plugins/* root@172.22.44.91:/etc/search1/instancegroup1/conf/plugins/ scp -r /etc/search1/instancegroup1/conf/plugins/* root@172.22.44.6:/etc/search1/instancegroup1/conf/plugins/ scp -r /etc/search1/instancegroup1/conf/plugins/* root@172.22.44.7:/etc/search1/instancegroup1/conf/plugins/
-
登录172.22.44.91:8180 重启 search1 集群。
-
在 172.22.44.91(目标主机)上输入以下命令查看分词器是否生效
curl -s "localhost:9200/_cat/plugins?v"
如果出现 analysis-hanlp 及 analysis-pinyin,则说明安装成功。
-
下载 esm
下载地址为:Releases · medcl/esm (github.com)
根据自己的操作系统版本选择相应的版本进行下载,此处以 migrator-linux-amd64 为例。
下载完成后,再进行如下操作
# 重命名 mv migrator-linux-amd64 esm # 添加可执行权限 chmod u+x esm
此时,再执行
./esm --help
可以看到该命令的详细使用说明。 -
执行以下命令,进行数据迁移
./esm -s http://172.22.20.1:9200 -x "ticket_info" -y "ticket_info_xxx" -d http://172.22.44.91:9200 -c 10000 --copy_settings --copy_mappings --force --refresh
命令解读:
- -s : 指定源 search
- -x : 指定源 index 名
- -y :指定目标 index 名
- -d:指定目标 search
- -c:指定每一批次迁移的 document 数量
- –copy_settings –copy_mappings –force –refresh:此处由于目标 search 中原本不存在 "ticket_info_xxx" 这个 index,其 settings 和 mappings 都需要从源 index 中拷贝过来,所以需要加这么一串指令。
最终出现如下界面则说明数据迁移成功: