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

时间:2018-01-27 10:26:04

标签: elasticsearch

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

由于它们都具有相同的ES版本,我只需将“数据”文件夹从机器A拖到B.当我检查其运行状况时,其状态为红色,active_primary_shards为0.所以我改变了我所做的更改。

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

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

1 个答案:

答案 0 :(得分:3)

使用快照/恢复

只要您拥有snapshot/restore或单节点群集,就可以完美地使用shared file system执行此任务。共享FS应符合以下标准:

  

为了注册共享文件系统存储库,这是必要的   将相同的共享文件系统挂载到所有主服务器上的相同位置   和数据节点。

如果您拥有单节点群集,那么这不是问题。在这种情况下,只需创建一个快照并将其复制到其他计算机上。

如果有许多节点在运行,那么这可能是一项具有挑战性的任务。 您可以使用supported plugins中的一个用于S3,HDFS和其他云存储。

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

使用_reindex API

使用_reindex API将数据从一个ES群集传输到另一个ES群集可能更容易。有一种特殊的Reindex from Remote模式可以准确地使用这个用例。

reindex实际上做的是源索引上的scroll和目标索引的大量插入(可以是远程的)。

您应该注意几个问题:

  1. 设置目标索引(无映射,不会通过reindex设置设置)
  2. 如果源索引上的某些字段为excluded from _source,则其内容不会被复制到目标索引
  3. 总结

    用于快照/恢复

    优点:

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

    缺点:

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

    对于_reindex

    优点:

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

    缺点:

    • _source中排除的数据将会丢失

    这也是三年前的类似SO question

    希望有所帮助!