我创建了一个具有一个主节点和两个数据节点的集群。我需要知道在主节点中建立索引后如何创建副本。有没有办法找出我的副本是否成功创建?另外,如何关闭主节点并检查副本是否可以通过数据节点访问?

最佳答案

在Elasticsearch中,主节点根本不保存任何数据。它与主/从数据库中的概念不同。在ES中,您无法关闭主服务器并期望数据节点正常工作。如果关闭单个主节点,则群集将变为红色,并且不再起作用。

主分片和副本分片都只存储在数据节点中,。您的索引被划分为主分区,这些分区将在群集的所有数据节点上保持平衡。如果决定使用副本分片,则将以相同方式在数据节点上复制和平衡主分片。

对文档建立索引时,通常会将其发送到数据节点,该文档将在主分片中建立索引,然后复制到相应的副本分片中。

为文档建立索引后,您可以在搜索中使用preference参数来检查主分片和副本分片是否都包含该文档,例如

这只会搜索主要碎片

GET my-index/_search?preference=_primary

这只会搜索副本碎片
GET my-index/_search?preference=_replica

如果索引操作成功,则两次搜索应返回完全相同的结果。

请注意,preference参数已在6.1中弃用,并将在7中作为其usage is discouraged移除。

10-08 06:19