说明
本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)。
- 本工具适用于社区版本为 5.x/6.x/7.x 的 elasticsearch,暂不支持其他社区版本
- 本工具会根据索引主分片 size 自动计算出最佳分组,适用于解决在迁移时需要分批迁移的需求
工具适用场景
- logstash 数据迁移
- snapshot 数据迁移
1. 准备工作
● 服务器准备
准备一台可以访问到 ES 实例的服务器,其网络环境应该是互通的;
● ES 实例设置白名单
运行 IndexGrouping 工具所在主机,需要对 ES 有访问权限,ES 白名单添加允许 IndexGrouping 工具机访问。
2. 执行方式
2.1. 下载工具并赋予执行权限
代码语言:javascript复制# 下载 ES_IndexGrouping
wget
# 解压
unzip index_grouping.zip
# 赋予执行权限
cd index_grouping/index_grouping/linux
chmod x index_grouping
# 查看help
./index_grouping --help
2.2. 参数说明
代码语言:javascript复制--user default: elastic
--password default: 默认读取环境变量 export password='***'
--ip default: 没有默认值,必要参数,不允许为空
--port default: 9200
--pattern default: 索引匹配规则,默认为 '*',支持逗号分隔
--instances default: 分组数量。没有默认值,必要参数,不允许为空
2.3. 执行示例
示例 1
ES 实例没有密码认证,端口为9200,且所有索引都需要进行 分组,分组数为10个
代码语言:javascript复制./index_grouping --ip 127.0.0.1 --instances 10
示例 2(推荐)
密码赋值和执行命令写成一条,中间无需分号
代码语言:javascript复制password='123456' ./index_grouping --ip 127.0.0.1 --port 9200 --user logUser --pattern 'logstash-*2023.04.18*' --instances 10
示例 3
通过环境变量自动加载密码。
代码语言:javascript复制export password='123456'
nohup ./index_grouping --ip 127.0.0.1 --user logUser --pattern '*2023.04.18*' --instances 10
示例 4
不安全,不推荐。这种参数传递方式可以在 ps -ef 中看到 --password 的明文密码
代码语言:javascript复制./index_grouping --ip 127.0.0.1 --user logUser --password '123456' --pattern 'logstash-*2023.04.18*' --instances 10
3. 常见问题
3.1. 执行报错 Permission denied
代码语言:javascript复制-bash: ./index_grouping: Permission denied
解答:
需要赋予执行权限,赋权方式:
代码语言:javascript复制chmod x index_grouping