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 进行数据迁移

相关推荐
期待のcode11 小时前
MyBatis-Plus通用枚举
java·数据库·后端·mybatis·springboot
编织幻境的妖11 小时前
数据库物化视图与普通视图区别
数据库·oracle
进阶的DW11 小时前
测开平台(后端开发)
数据库
Hello.Reader11 小时前
Flink SQL 集合运算UNION / INTERSECT / EXCEPT 以及 IN / EXISTS 在流式场景下怎么用?
数据库·sql·flink
_Minato_11 小时前
数据库知识整理——数据库控制功能
数据库·经验分享·笔记·软考·计算机系统
TDengine (老段)11 小时前
TDengine 数据订阅架构设计与最佳实践
大数据·数据库·时序数据库·tdengine·涛思数据
Jtti11 小时前
MySQL磁盘不足会导致服务直接崩溃吗?
数据库·mysql
蜂蜜黄油呀土豆11 小时前
分布式基础知识:分布式事务完整解析(背景、模式、协议、优缺点)
数据库·微服务·分布式事务·架构设计·分布式系统·2pc/3pc·tcc/saga
写代码的【黑咖啡】11 小时前
MySQL 主从同步与读写分离详解
数据库·mysql
我是高手高手高高手11 小时前
TP8 增加数据时在数据回滚事务时没错误数据却没有插入(表数据插入不了)startTrans() rollback()Db::transaction
数据库