工具概述
这是一个用于 Elasticsearch 7x 的数据迁移 Python 脚本,支持以下功能:
- 跨集群数据迁移(支持认证)
- 按索引前缀或精确名称筛选迁移
- 批量处理(可配置批量大小)
- 自动创建目标索引(保留源索引结构)
- 实时进度显示和性能统计
功能特性
核心功能
✅ 完整的索引结构和数据迁移
✅ 支持源和目标集群不同认证信息
✅ 断点续传能力
✅ 详细的迁移报告
筛选功能
🔍 按索引前缀筛选(--index-prefix)
🔍 按精确索引名筛选(--index-filter)
🔍 支持同时使用两种筛选方式
性能监控
📊 实时显示迁移速度
📊 每个索引的进度条
📊 迁移完成后的详细统计
环境要求
- Python 3.6+
- 以下Python包
- elasticsearch==7.15.2(你使用的版本)
- tqdm==4.62.3
安装依赖:
bash
pip install elasticsearch==7.15.2 tqdm==4.62.3
使用说明
基本命令
python es_migration.py \
--source-host <源ES地址> \
--source-user <源用户名> \
--source-pass <源密码> \
--target-host <目标ES地址> \
--target-user <目标用户名> \
--target-pass <目标密码> \
[其他参数]
参数说明
参数 | 必选 | 说明 | 示例 |
---|---|---|---|
--source-host | 是 | 源ES地址 | http://192.168.1.210:9200 |
--source-user | 是 | 源ES用户名 | elastic |
--source-pass | 是 | 源ES密码 | yourpassword |
--target-host | 是 | 目标ES地址 | http://192.168.1.136:9200 |
--target-user | 是 | 目标ES用户名 | elastic |
--target-pass | 是 | 目标ES密码 | yourpassword |
--batch-size | 否 | 每批处理的文档数(默认5000) | 10000 |
--scroll-keepalive | 否 | scroll API保持时间(默认15m) | 30m |
--index-filter | 否 | 精确匹配的索引名(可多个) | index1 index2 |
--index-prefix | 否 | 索引名前缀匹配 | logs. |
使用示例
python es_migration.py --source-host http://192.168.1.210:9200 --source-user elastic --source-pass pass@2025 --target-host http://192.168.1.136:9200 --target-user elastic --target-pass pass@2025 --batch-size 5000 --scroll-keepalive 15m --index-prefix "log."
输出说明
脚本运行时将显示:
- 连接测试结果
- 发现的索引数量和列表
- 每个索引的迁移进度条
- 实时迁移速度
- 已迁移文档数/总文档数
迁移完成后将生成报告:
- 开始和结束时间
- 总耗时
- 成功/失败的索引列表
- 平均迁移速度
源码下载:https://download.csdn.net/download/MaYuKang/90677592?spm=1001.2014.3001.5503