Easysearch 迁移数据之 Reindex From Remote

在之前的博客《从 Elastic 迁移到 Easysearch 指引》中介绍过如何把索引从 Elasticsearch 迁移到 Easysearch。有时候想临时从 Elasticsearch 迁移点儿数据做测试,数据量不大,也可尝试使用 Reindex From Remote 的方法。

测试环境介绍

本次主要测试从远程集群索引数据,reindex 还有很多其他使用方式,详情请参考官方文档

  • Easysearch 版本:1.10.0,监听 localhost:9200
  • Elasticsearch 版本:6.8.23,监听 localhost:9201
  • INFINI Console 版本:1.25.1(运行 reindex 命令用)

Reindex API

Reindex 可以从本地或远程集群将源索引数据写入本地目标索引。使用简单,有以下注意点:

  • 源索引启用 _source ,这个默认都是启用的
  • 在调用 _reindex 之前,应该先创建、配置目标索引
  • 如果源索引在远程集群,必须在 easysearch.yml 中配置 reindex.remote.whitelist 设置
  • 使用 POST 调用

测试过程

我们先不设置白名单,直接从远程集群 reindex 看看会怎样。

报错提示 localhost:9201 不在 reindex.remote.whitelist 中。

正常操作步骤

  1. 编辑 Easysearch 配置文件 easysearch.yml,添加白名单,重启生效。
reindex.remote.whitelist: [localhost:9201]
  1. 建立目标索引,指定 setting 和 mapping

reindex 不会复制源索引的 setting 和 mapping,需要提前创建目标索引,否则会使用默认设置。

  1. 执行 reindex 命令

执行成功。需要注意的是,如果数据量比较大,reindex 命令会超时,这个没关系,任务会继续在后台执行。也可以在执行 reindex 的时候添加参数 wait_for_completion=false 不等待执行完成,直接返回任务 id。

POST _reindex?wait_for_completion=false

针对有认证的集群,reindex 可以指定以下选项:

总结

针对临时数据量不大的场景可尝试使用 reindex 迁移数据。如果数据量大了,reindex 迁移速度不是很高效,而且如果中途出现错误迁移中断了,需要重新 reindex 不方便,建议使用 INFINI Console 进行数据迁移

在使用 Elasticsearch 的过程中,如果遇到 `Unknown configuration key [reindex.remote.whitelist]` 错误提示,通常意味着当前的 Elasticsearch 版本不支持该配置项,或者配置方式存在错误。 `reindex.remote.whitelist` 是 Elasticsearch 中用于限制远程 Reindex 操作目标主机的白名单配置项。该功能允许用户指定一组允许进行远程 Reindex 的主机地址,以提高安全性,防止未经授权的远程数据拉取操作。典型的配置格式如下: ```yaml reindex.remote.whitelist: "old-es-host:9200, another-host:9200, 127.0.10.*:9200, localhost:*" ``` 需要注意的是,从 Elasticsearch 7.x 开始,该配置项已经被弃用,并逐步被 `reindex.ssl.verification_mode` 和其他安全机制所取代,尤其是在启用了安全功能(如 TLS/SSL 和用户权限控制)的企业环境中。因此,如果使用的是较新的 Elasticsearch 版本(如 7.x 或更高),尝试配置 `reindex.remote.whitelist` 会导致 `Unknown configuration key` 错误。 如果仍然希望使用远程 Reindex 功能,可以通过以下方式替代: 1. **启用安全功能并配置用户权限**:通过 Elasticsearch 的安全功能(如角色权限管理)控制哪些用户可以执行远程 Reindex 操作。 2. **使用 API 级别的身份验证**:在远程 Reindex 请求中提供用户名和密码,如下所示: ```json { "source": { "remote": { "host": "http://old-es-host:9200", "username": "elastic", "password": "your_secure_password" }, "index": "source_index" }, "dest": { "index": "target_index" } } ``` 3. **通过代理或防火墙控制访问**:在基础设施层面限制远程 Reindex 操作的目标地址,而非依赖 Elasticsearch 内部的白名单机制。 如果确实需要使用 `reindex.remote.whitelist` 配置项,请确认当前 Elasticsearch 版本是否支持。通常,该配置项适用于 6.x 及更早版本。对于 7.x 及以上版本,建议采用更现代的安全控制手段。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值