es --- 集群数据迁移

目录

1、需求

迁移部分新集群没有的索引和数据

2、工具elasticdump

Elasticdump 的工作原理是将输入发送到输出 。两者都可以是 elasticsearch URL 或 File

2.1 mac安装

前置:已经安装有npm

复制代码
npm install elasticdump -g

(-g 全局)

报错:

npm WARN ERESOLVE overriding peer dependency

npm WARN While resolving: requestretry@7.1.0

npm WARN Found: peer request@"2.." from the root project

npm WARN npm WARN Could not resolve dependency:

npm WARN peer request@"2.." from the root project

npm ERR! code EACCES

npm ERR! syscall mkdir

npm ERR! path /Users/miuye/.npm/_cacache/content-v2/sha512/cd/26

npm ERR! errno EACCES

npm ERR!

npm ERR! Your cache folder contains root-owned files, due to a bug in

npm ERR! previous versions of npm which has since been addressed.

npm ERR!

npm ERR! To permanently fix this problem, please run:

npm ERR! sudo chown -R 501:20 "/Users/miuye/.npm"

问题

1、依赖冲突 2、权限不足

解决
复制代码
# 升级相关包
sudo npm install requestretry@latest -g
复制代码
# sudo重新执行
sudo npm install elasticdump -g

2.2 elasticdump文档

https://github.com/taskrabbit/elasticsearch-dump

3、迁移

迁移mapping

elasticdump --input="http://username:password@testing.es.com:9200/my_index" --output="http://username:password@staging.es.com:9200/$INDEX_NAME" --type=mapping

迁移data

elasticdump --input="http://username:password@testing.es.com:9200/my_index" --output="http://username:password@staging.es.com:9200/$INDEX_NAME" --type=data

【注意】:鉴权的用户名和密码写在url中,以@分割,无鉴权就只写es url

如果目的es中已经存在对应资源,会报错,可以设置--skip-existing=true,如果资源存在,不报错

我使用的脚本进行对比和迁移,如果需要新集群的配置信息和新集群保持一致,可以先迁移setting

shell 复制代码
#!/bin/bash

# 源集群和目标集群的配置
SOURCE_ES_URL="http://testing.es.com:9200"
TARGET_ES_URL="http://staging.es.com:9200"
SOURCE_USERNAME="testing"
SOURCE_PASSWORD="123456"
TARGET_USERNAME="staging"
TARGET_PASSWORD="123456"


# 获取源集群中所有索引的名称
INDEXES=$(curl -u $SOURCE_USERNAME:$SOURCE_PASSWORD -s -X GET "$SOURCE_ES_URL/_cat/indices?h=index&s=index")

while IFS= read -r INDEX_NAME; do
	# 只迁移以_dev结尾的
    if [[ "$INDEX_NAME" == *_dev ]]; then
        # 查询新集群索引
        INDEX_EXISTS=$(curl -u $TARGET_USERNAME:$TARGET_PASSWORD -s -o /dev/null -w "%{http_code}" -X GET "$TARGET_ES_URL/$INDEX_NAME")
        
        # 检查 curl 命令是否成功
        if [ $? -ne 0 ]; then
            echo "Failed to check index existence for $INDEX_NAME"
            continue
        fi

        if [ "$INDEX_EXISTS" -eq 200 ]; then
            echo "Index $INDEX_NAME exists, jump"
        elif [ "$INDEX_EXISTS" -eq 404 ]; then
            echo "Index $INDEX_NAME not exists, transfer..."
            # 迁移结构
            elasticdump --input="http://$SOURCE_USERNAME:$SOURCE_PASSWORD@testing.es.com:9200/$INDEX_NAME" --output="http://$TARGET_USERNAME:$TARGET_PASSWORD@staging.es.com:9200/$INDEX_NAME" --type=mapping
            # 迁移数据
            elasticdump --input="http://$SOURCE_USERNAME:$SOURCE_PASSWORD@testing.es.com:9200/$INDEX_NAME" --output="http://$TARGET_USERNAME:$TARGET_PASSWORD@staging.es.com:9200/$INDEX_NAME" --type=data
        else
            echo "Unknown $INDEX_EXISTS for $INDEX_NAME"
        fi
    fi
done <<< "$INDEXES"
相关推荐
GIS数据转换器几秒前
基于AI的低空数联无人机智慧巡查平台
大数据·人工智能·机器学习·无人机·宠物
跨境摸鱼1 分钟前
用“内容+投放+运营”打出增长曲线
大数据·安全·跨境电商·亚马逊·内容营销
ApacheSeaTunnel32 分钟前
Apache SeaTunnel Zeta、Flink、Spark 怎么选?底层原理 + 实战对比一次讲透
大数据·flink·spark·开源·数据集成·seatunnel·数据同步
电商API&Tina38 分钟前
乐天平台 (Rakuten) 数据采集指南
大数据·开发语言·数据库·oracle·json
无忧智库44 分钟前
全域未来乡村数字化建设与共富运营规划方案深度解读:打造数字乡村“中国样本“的完整方法论(PPT)
大数据·人工智能
紧固件研究社1 小时前
2026第十六届上海紧固件专业展|洞察紧固件升级新方向
大数据·人工智能·制造·紧固件·上海紧固件展·上海紧固件专业展
代码匠心1 小时前
从零开始学Flink:状态管理与容错机制
java·大数据·后端·flink·大数据处理
Elastic 中国社区官方博客1 小时前
金融服务公司如何大规模构建上下文智能
大数据·人工智能·elasticsearch·搜索引擎·ai·金融·全文检索
梵得儿SHI1 小时前
深度拆解 Google Personal Intelligence:下一代个性化 AI 的技术架构、隐私保障与未来愿景
大数据·人工智能·agi·pi·跨产品数据整合
策知道2 小时前
2026年北京政府工作报告产业指标深度解析
大数据·数据库·人工智能·搜索引擎·政务