Elasticdump 是一款用于迁移和保存 Elasticsearch 及 OpenSearch 索引的工具。它支持在不同 Elasticsearch/OpenSearch 实例之间传输数据,或备份索引至文件、对象存储(如 AWS S3、MinIO)等目标位置。该工具可灵活处理索引的映射(mapping)、分析器(analyzer)、数据(data)等多种类型,并提供数据过滤、分片、加密等高级功能,适用于数据备份、跨环境迁移、数据导出等场景。
--searchBody 指定查询条件,仅导出符合条件的数据;支持搜索模板(Search Template)。multielasticdump 工具批量迁移多个索引。需先安装 Node.js(v10.0.0+),通过 npm 安装:
bash# 本地安装 npm install elasticdump ./bin/elasticdump # 全局安装 npm install -g elasticdump elasticdump
bashdocker pull elasticdump/elasticsearch-dump
bashdocker run --rm -ti elasticdump/elasticsearch-dump [OPTIONS]
--rm:退出后删除容器。-ti:交互式终端,便于查看日志。-v /本地目录:/容器内目录)。迁移索引的映射、分析器和数据:
bash# 迁移分析器 docker run --rm -ti elasticdump/elasticsearch-dump \ --input=[***] \ --output=[***] \ --type=analyzer # 迁移映射 docker run --rm -ti elasticdump/elasticsearch-dump \ --input=[***] \ --output=[***] \ --type=mapping # 迁移数据 docker run --rm -ti elasticdump/elasticsearch-dump \ --input=[***] \ --output=[***] \ --type=data
将索引映射和数据备份至宿主机 /data 目录(需挂载卷):
bash# 备份映射 docker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \ --input=[***] \ --output=/tmp/my_index_mapping.json \ --type=mapping # 备份数据(启用 GZIP 压缩) docker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \ --input=[***] \ --output=/tmp/my_index_data.json.gz \ --type=data \ --fsCompress
导出 username: admin 的记录至文件:
bashdocker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \ --input=[***] \ --output=/tmp/admin_data.json \ --type=data \ --searchBody='{"query":{"term":{"username":"admin"}}}'
若查询条件复杂,可将 JSON 保存至文件(如
/data/search.json),通过--searchBody=@/tmp/search.json引用。
bashdocker run --rm -ti elasticdump/elasticsearch-dump \ --s3AccessKeyId "AKIAXXX" \ --s3SecretAccessKey "secret" \ --input "s3://my-bucket/backup/my_index_data.json" \ --output=[***] \ --type=data
导入 CSV 文件(跳过首行标题,使用分号分隔):
bashdocker run --rm -ti -v /data:/tmp elasticdump/elasticsearch-dump \ --input "csv:///tmp/data.csv" \ --output=[***] \ --csvSkipRows 1 \ --csvDelimiter ";"
若 Elasticsearch 未部署在根路径(如 [***]),需显式指定索引名:
bashdocker run --rm -ti elasticdump/elasticsearch-dump \ --input=[***] \ --input-index=my_index \ --output=[***] \ --output-index=my_index_backup \ --type=data
若需访问宿主机上的 Elasticsearch(localhost:9200),需使用主机网络:
bashdocker run --rm -ti --net=host elasticdump/elasticsearch-dump \ --input=[***] \ --output=http://localhost:9200/my_index \ --type=data
Elasticdump 生成的文件为行分隔 JSON(Line-Delimited JSON),即每行是一个独立的 JSON 对象,而非整体 JSON 数组。此格式支持流式处理,避免内存溢出。示例:
json{"_index":"my_index","_type":"_doc","_id":"1","_source":{"name":"test1"}} {"_index":"my_index","_type":"_doc","_id":"2","_source":{"name":"test2"}}
可通过以下命令解析:
bashwhile read LINE; do jq . <<< "${LINE}"; done < dump.json
| 参数 | 默认值 | 描述 |
|---|---|---|
--input | 无(必填) | 输入源(ES 地址、文件路径、S3 URL 等,如 [***])。 |
--output | 无(必填) | 输出目标(格式同 --input)。 |
--input-index | all | 输入索引名(含类型,如 my_index/_doc)。 |
--output-index | all | 输出索引名。 |
--type | data | 迁移数据类型:settings/analyzer/mapping/data/alias/template 等。 |
| 参数 | 默认值 | 描述 |
|---|---|---|
--limit | 100 | 批量操作的对象数量(近似值)。 |
--size | -1 | 最大迁移对象数(-1 表示无限制)。 |
--searchBody | 匹配所有文档 | 过滤查询 JSON(如 {"query":{"match_all":{}}}),支持 @file 引用文件。 |
--searchWithTemplate | false | 启用搜索模板(需 --searchBody 包含 id 和 params)。 |
--sourceOnly | false | 仅输出 _source 字段内容(默认包含 _index/_id 等元数据)。 |
--delete | false | 迁移后删除输入源文档(不删除索引)。 |
| 参数 | 默认值 | 描述 |
|---|---|---|
--concurrency | 1 | 并发请求数上限。 |
--scrollTime | 10m | 滚动查询(scroll)结果在节点保留时间(如 5m、1h)。 |
--timeout | 无 | 请求超时时间(毫秒)。 |
--retryAttempts | 0 | 网络错误重试次数(支持 ECONNRESET/ETIMEDOUT 等错误)。 |
--retryDelay | 5000 | 重试间隔(毫秒)。 |
| 参数 | 默认值 | 描述 |
|---|---|---|
--fileSize | 无 | 文件分割大小(如 10mb、1gb)。 |
--maxRows | 无 | 文件分割行数。 |
--fsCompress | false | 启用文件 GZIP 压缩/解压。 |
--csvDelimiter | , | CSV 文件分隔符(如 ;、\t)。 |
--csvSkipRows | 0 | CSV 跳过行数(不含标题行)。 |
| 参数 | 默认值 | 描述 |
|---|---|---|
--s3AccessKeyId | 无 | AWS/S3 访问密钥 ID。 |
--s3SecretAccessKey | 无 | AWS/S3 密钥。 |
--s3Region | 自动推断 | S3 区域(如 us-east-1)。 |
--s3Endpoint | 无 | S3 兼容服务端点(如 MinIO:[***])。 |
--s3ForcePathStyle | false | 强制使用路径风格 URL(如 s3.amazonaws.com/bucket/key)。 |
--s3ServerSideEncryption | false | 启用 S3 服务端加密。 |
| 参数 | 默认值 | 描述 |
|---|---|---|
--tlsAuth | false | 启用 TLS 客户端认证。 |
--cert | 无 | TLS 客户端证书文件路径。 |
--key | 无 | TLS 客户端密钥文件路径。 |
--headers | {"User-Agent": "elasticdump"} | 自定义 HTTP 头(如代理认证)。 |
bulk 选项,多索引迁移需使用 multielasticdump。s3Bucket/s3RecordKey,需使用 S3 URL(如 s3://bucket/key)。升级版本前建议参考 *** release 说明,避免数据格式或功能兼容性问题。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429