【问题标题】:What's the easiest way of moving Elastic Search data between servers在服务器之间移动 Elastic Search 数据的最简单方法是什么
【发布时间】:2018-01-28 23:11:30
【问题描述】:

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

由于它们的ES版本相同,我只是将“数据”文件夹从机器A拖到B。当我检查它的健康时,它的状态是红色的,并且active_primary_shards是0。所以我将我所做的更改反转了。

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

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

【问题讨论】:

标签: elasticsearch


【解决方案1】:

使用快照/恢复

只要您有shared file system 或单节点集群,您就可以完美地使用snapshot/restore 来完成此任务。共享 FS 应满足以下条件:

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

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

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

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

使用_reindex API

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

reindex 的实际作用是在源索引上添加一个scroll,并将大量批量插入到目标索引(可以是远程的)。

您应该注意几个问题:

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

总结

用于快照/恢复

优点:

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

缺点:

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

对于_reindex

优点:

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

缺点:

  • _source 中排除的数据将丢失

这也是三年前类似的SO question

希望有帮助!

【讨论】:

  • 感谢您的评论,尼古拉。我最终使用了快照/恢复方法。只用了 15 分钟!
猜你喜欢
  • 1970-01-01
  • 2023-02-07
  • 2019-01-08
  • 2018-09-30
  • 1970-01-01
  • 2012-05-08
  • 2010-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多