在服务器之间移动 Elastic Search 数据的最简单方法是什么

cem*_*lut 4 elasticsearch

我在 Windows 和 Centos7 机器上安装了 Elastic Search v6.1.0。目标是将数据从Win迁移到Centos7机器。

由于它们都有相同的 ES 版本,我只需将“data”文件夹从机器 A 拖到 B 即可。当我检查其运行状况时,其状态为红色,active_primary_shards 为 0。因此我撤消了所做的更改。

还有哪些其他方法?可以使用快照/恢复方法来实现此目的吗?我认为这是为了在不同版本之间迁移。

所以问题是,在具有相同 ES 版本的两台服务器之间移动数据的最佳/最简单方法是什么?

Nik*_*iev 5

使用快照/恢复

只要您有共享文件系统或单节点集群,您就可以完美地使用快照/恢复来完成此任务。共享 FS 应满足以下条件:

为了注册共享文件系统存储库,需要将相同的共享文件系统安装到所有主节点和数据节点上的相同位置。

因此,如果您有单节点集群,这不是问题。在这种情况下,只需制作快照并将其复制到其他计算机即可。

如果您有许多节点正在运行,这可能是一项具有挑战性的任务。您可以使用 S3、HDFS 和其他云存储支持的插件之一。

这种方法的优点是数据和索引是完整的快照。

使用_reindexAPI

使用_reindexAPI将数据从一个 ES 集群传输到另一个 ES 集群可能会更容易。有一个特殊的“远程重新索引”模式可以满足这种用例。

重新索引实际上所做的是源索引上的滚动和对目标索引(可以是远程的)的大量批量插入。

您应该注意以下几个问题:

  1. 设置目标索引(无映射,重新索引不会设置任何设置)
  2. 如果源索引上的某些字段被排除,_source那么它们的内容将不会复制到目标索引

加起来

用于快照/恢复

优点:

  • 所有数据和索引均按原样保存/恢复
  • 需要调用2次ES API

缺点:

  • 如果集群有超过1个节点,则需要设置共享FS或使用一些云存储

为了_reindex

优点:

  • 适用于任何规模的集群
  • 数据直接复制(无需中间存储)
  • 需要 1 次调用 ES API

缺点:

  • 排除的数据_source将会丢失

这也是大约三年前的一个类似的问题。

希望有帮助!