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,添加白名单,重启生效。
plain 复制代码
reindex.remote.whitelist: [localhost:9201]
  1. 建立目标索引,指定 setting 和 mapping

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

  1. 执行 reindex 命令

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

plain 复制代码
POST _reindex?wait_for_completion=false

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

总结

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

相关推荐
余槐i6 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
数据库小学妹6 小时前
PostgreSQL表膨胀怎么办?autovacuum清不动的根因与排查命令
数据库·postgresql·表膨胀·mvcc·数据库运维
mister_guo6 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
骇客野人7 小时前
在麒麟操作系统上 分别安装 jdk1.8, 达梦数据库,redis ,memcache 的操作实施方案和步骤
数据库·redis·memcached
美狐美颜SDK开放平台8 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
花间相见10 小时前
【计算基础|MySQL01】【上手】安装连接、数据类型与建库建表
数据库·后端
花间相见10 小时前
【计算基础|MySQL02】【上手】SQL 增删改查
数据库·后端
ITxiaobing202310 小时前
IP 库与 AppsFlyer 国家/地区数据不一致,如何系统地对账?
数据库·网络协议·tcp/ip
这个DBA有点耶10 小时前
从时间到语义:时序数据库与向量数据库的核心机制、选型与多模融合趋势
数据库·mysql·架构
对空六课11 小时前
RFM分层边界变化的回溯计算
大数据·服务器·前端·数据库·人工智能·算法·数据分析