Fork me on GitHub

使用Reindex实现Elasticsearch数据迁移

目录

  • 背景

  • 第一部分 alias配置和取消

  • 第二部分 alias查看

  • 参考文献及资料

背景

在实际生产环境中,需要对线上Elasticsearch集群进行置换。业务上需要集群对外服务不中断的前提上,将原集群的数据迁移至新集群。目前迁移有多种方案,主要有:elasticsearch-dumplogstashreindexsnapshot等方式。

elasticsearch-dump logstash snapshot reindex
基本原理 逻辑备份,类似mysqldump将数据一条一条导出后再执行导入 从一个 ES 集群中读取数据然后写入到另一个 ES 集群 从源 ES 集群通过备份api创建数据快照,然后在目标 ES 集群中进行恢复 reindex是Elasticsearch提供的一个api接口,可以把数据从一个集群迁移到另外一个集群
网络要求 网络需要互通 网络需要互通 无网络互通要求 网络需要互通
迁移速度 一般 一般
运维配置复杂度 复杂,索引的分片数量和副本数量需要对每个索引单独进行迁移,或者直接在目标集群提前将索引创建完成,再迁移数据 复杂,需要提前在目标集群创建mapping和setting等,再迁移数据 简单 需要在目标ES集群中配置reindex.remote.whitelist参数,指明能够reindex的远程集群的白名单
适合场景 适用于数据量小的场景 适用于数据量一般,近实时数据传输 适用于数据量大,接受离线数据迁移的场景 本地索引更新Mapping实现索引层面迁移,或者跨集群的索引迁移
  • scroll query + bulk: 批量读取旧集群的数据然后再批量写入新集群,elasticsearch-dump、logstash、reindex都是采用这种方式
  • snapshot: 直接把旧集群的底层的文件进行备份,在新的集群中恢复出来,相比较scroll query + bulk的方式,snapshot的方式迁移速度最快。

https://cloud.tencent.com/developer/article/1611786

第一部分 Reindex接口介绍

reindex 是 ES 提供的一个 api 接口,可以把数据从源 ES 集群导入到当前 ES 集群,实现集群内部或跨集群同步数据。

但仅限于腾讯云 ES 的实现方式(跨集群迁移需要elasticsearch.yml中加上ip白名单,并重启集群),所以腾讯云ES不支持 reindex 操作。具体见官方文档说明:https://www.elastic.co/guide/en/elasticsearch/reference/7.3/reindex-upgrade-remote.html

第三部分 Reindex迁移方案

下面简单介绍 reindex 接口的使用方法:

1) 配置 elasticsearch.yml中的reindex.remote.whitelist 参数

需要在目标 ES 集群中配置该参数,指明能够 reindex 的远程集群的白名单。

2) 调用 reindex api

以下操作表示从源 ES 集群中查询名为 test1 的索引,查询条件为 title 字段为 elasticsearch,将结果写入当前集群的 test2 索引。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
POST _reindex
{
"source": {
"remote": {
"host": "http://172.16.0.39:9200"
},
"index": "test1",
"query": {
"match": {
"title": "elasticsearch"
}
}
},
"dest": {
"index": "test2"
}
}

从源索引中提取文档源,并将文档索引到目标索引中。可以将所有文档复制到目标索引,或为文档的子集重新索引。_reindex获取源索引的快照,但是其目标必须是其他索引,因此不会发生版本冲突。

第四部分 参数调优

https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html

https://www.cnblogs.com/Ace-suiyuan008/p/9985249.html

https://elkguide.elasticsearch.cn/elasticsearch/api/reindex.html

参考文献及资料

1、Reindex from a remote cluster,链接:https://www.elastic.co/guide/en/elasticsearch/reference/current/reindex-upgrade-remote.html

本文标题:使用Reindex实现Elasticsearch数据迁移

文章作者:rong xiang

发布时间:2020年12月12日 - 12:12

最后更新:2022年10月25日 - 23:10

原始链接:https://zjrongxiang.github.io/posts/26deb32d/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%