Elasticsearch 中的每个索引都分为一个或多个分片。索引中的每个文档都属于一个分片。
一个集群可以包含一个分片的多个副本。每个分片都有一个称为主分片的突出副本,以及零个或多个称为副本的非主副本。主分片副本充当所有索引操作的主要入口点。主分片副本上的操作随后将转发到其副本。
副本在集群中的节点之间维护数据的冗余副本,以防止硬件故障并提高服务读取请求(如搜索或检索文档)的能力。如果主分片副本失败,则会将副本提升为主副本并接管主副本的职责。
在正常运行过程中,Elasticsearch 将分片副本分配给节点,跨节点重定位分片副本以平衡集群或满足新的分配约束,并恢复分片以初始化新的副本。在本主题中,你将学习这些操作的工作原理以及如何控制它们。
要了解有关优化集群中分片数量和大小的信息,请参阅调整分片大小。要了解有关如何在分片和分片副本之间复制读取和写入操作的信息,请参阅读取和写入文档。
分片分配是将分片副本分配给节点的过程。这可能发生在初始恢复、副本分配、重新平衡、将节点添加到集群或从集群中删除节点时,或者在更新影响分配的集群或索引设置时。
默认情况下,索引的主分片副本和副本分片副本可以分配给集群中的任何节点,并且可以重定位以重新平衡集群。
你可以使用以下设置来控制如何分配分片副本
-
集群级分片分配设置:使用这些设置来控制如何在整个集群中分配和平衡分片副本。例如,你可能希望将节点分配到可用区,或者阻止使用某些节点以便可以执行维护。
-
索引级分片分配设置:使用这些设置来控制如何分配特定索引的分片副本。例如,你可能希望将索引分配到特定数据层的节点,或分配到具有特定属性的节点。
如果分片副本未分配,则表示该分片副本未分配给集群中的任何节点。如果集群中没有足够的节点来分配分片副本,或者分片副本无法分配给任何满足分片分配筛选规则的节点,则可能会发生这种情况。当分片副本未分配时,你的集群被认为是不健康的,并返回黄色或红色集群运行状况状态。
你可以使用以下 API 来监视分片分配
了解有关排除未分配的分片副本故障和恢复集群运行状况的更多信息.
分片恢复是初始化分片副本的过程,例如从快照还原主分片或从主分片创建副本分片。当分片恢复完成时,恢复后的分片可用于搜索和索引。
恢复会在以下过程中自动发生
- 首次创建索引时。
- 当节点重新加入集群并使用其数据路径中保存的数据启动任何丢失的主分片副本时。
- 从主副本创建新的副本分片副本。
- 将分片副本重定位到同一集群中的其他节点。
- 一个快照还原操作。
- 一个克隆、收缩或拆分操作。
你可以使用恢复或cat 恢复API 来确定分片恢复的原因。
要控制如何恢复分片,例如恢复操作可以使用的资源,以及应优先恢复哪些索引,你可以调整以下设置
分片恢复操作也遵循通用分片分配设置。
分片重定位是将分片副本从一个节点移动到另一个节点的过程。这可能发生在节点加入或离开集群时,或者在集群重新平衡时。
当分片副本被重定位时,它会在目标节点上创建为新的分片副本。当分片副本被完全分配和恢复后,旧的分片副本将被删除。如果要重定位的分片副本是主副本,则在删除旧的分片副本之前,新的分片副本会被标记为主副本。
你可以控制如何以及何时重定位分片副本。例如,你可以调整重新平衡设置,这些设置控制何时重定位分片副本以平衡集群,或者触发重定位的基于磁盘的分片分配的高水位线。这些设置是集群级分片分配设置的一部分。
分片重定位操作也遵循分片分配和恢复设置。