![829c5c2253208060ccfe28f5b92da65f.png](https://i-blog.csdnimg.cn/blog_migrate/cbd1ffbe8eae470d01a65ea0bc849134.png)
在实际使用 Elasticsearch 集群的过程中,可能会遇到需要实验新版本的特性或者对集群中的数据进行垂直拆分,在这个过程中,就需要将原有集群中的数据搬到新的集群中,Elasticsearch 为此提供了:
- snapshot / restore
- reindex
以上两种方式,这里主要介绍第二种 reindex 的方式。
这里主要使用官方出品的工具:curator 进行相关的操作。
这里先给出 reindex 的基本配置:
![ee7536654e4bbbb33da040d7216e5881.png](https://i-blog.csdnimg.cn/blog_migrate/81f16517fe6d63aa61d4b06ec7369919.png)
注:curator 的配置文件是 YAML 格式。
使用 curator 通过 Reindex 的方式,核心部分的配置是 8 - 18 行。
- request_body 由 source 和 dest 两部分构成
- source 是指定 Elasticsearch 源集群,主要配置源集群的地址信息,以及 Reindex 所使用的源索引,这里 REINDEX_SELECTION 是一个特殊的占位符,表示的是通过 remote_filters 过滤器过滤之后得到的源索引名字。
- dest 是指定在目标 Elasticsearch 进行 Reindex 操作后,创建的索引的名字。这里 MIGRATION 也是一个特殊的占位符,它表示的是,在目标集群中创建的索引名字是,如下格式的:
当 migration_prefix 和 migration_suffix 都为空字符串时,dest_index_name 就完全和 source_index_name 一致了,这样在实际执行操作的时候,就省去了每次都要去指定 dest_index_name 的时间。
- remote_filters 是用于在源集群中,过滤出需要的源索引,以便进行后续的操作,过滤出来的源索引,在配置中使用 REINDEX_SELECTION 进行替换。
通过一份相对简单的配置,就可以完成日常的集群间的数据迁移。
更完整的配置,参见:https://github.com/fatelei/es-ops