我创建了一个具有一个主节点和两个数据节点的集群。我需要知道在主节点中索引文档后如何创建副本。有没有办法查明我的副本是否已成功创建?另外,如何关闭我的主节点并检查我的副本是否可以通过我的数据节点访问?
在 Elasticsearch 中,仅具有
master
角色的节点根本不保存任何数据。它与主/从数据库中的概念不同。在ES中,你不能关闭master并期望数据节点工作。如果您关闭单个主节点,您的集群就会变成红色并且不再起作用。
主分片和副本分片都仅存储在数据节点上。您的索引被划分为主分片,这些主分片将在集群的所有数据节点上保持平衡。如果您决定使用副本分片,主分片将以相同的方式在数据节点上进行复制和平衡。
当您对文档建立索引时,通常会将其发送到数据节点,该文档将在主分片中建立索引,然后复制到相应的副本分片中。
对文档建立索引后,您可以在搜索中使用
preference
参数检查主分片和副本分片是否都包含该文档,例如
这只会搜索主分片
GET my-index/_search?preference=_primary
这只会搜索副本分片
GET my-index/_search?preference=_replica
如果索引操作成功,则两次搜索应返回完全相同的结果。
请注意,
preference
参数已在 6.1 中弃用,并将在 7 中删除,因为不鼓励使用它。