分配改变

主分片分配

以前,只有在发现仲裁副本的法定数量时才分配主分片(可以使用index.recovery.initial_shards配置,现在已弃用)。在原版仅具有单个副本的情况下,将定额定义为单个分片。这意味着任何具有复制因子1的索引的分片副本都可以成为主要副本,即使它是磁盘上的数据的过期副本。由于shard分配ID,这现在是固定的。

分配ID为分片副本分配唯一标识符。这允许集群在相同数据的多个副本之间进行区分,并且跟踪哪些分片已经活动,使得在集群重新启动之后,只有包含最近数据的分片副本可以成为主要。

索引分片存储命令

通过使用分配ID而不是版本号来标识主分片分配的分片副本,以前的版本控制方案已过时。这反映在索引分片存储命令API中。

新的allocation_id字段替换了Indices Shard Stores命令的结果中的前版本字段。此字段可用于使用当前版本的Elasticsearch创建的所有分片副本,或者在运行当前版本的Elasticsearch的集群中处于活动状态的所有分片副本。对于在当前版本的Elasticsearch中尚未激活的旧版分片副本,可使用legacy_version字段(等同于前一版本字段)。

重新路由命令

重新路由命令allocate已分为两个不同的命令allocate_replica和allocate_empty_primary。这是因为我们引入了一个新的allocate_stale_primary命令。新的allocate_replica命令对应于旧的allocate命令,并且allow_primary设置为false。新的allocate_empty_primary命令对应于allow_primary设置为true的旧的allocate命令。

自定义Reroute命令

Elasticsearch不再支持注册自定义分配命令的插件。它是未使用的,希望不需要。

index.shared_filesystem.recover_on_any_node 改变

index.shared_filesystem.recover_on_any_node:true的行为已更改。以前,在没有找到分片副本的情况下,通过潜在地忽略分配决定器来选择任意节点。现在,我们考虑平衡,但是如果分配决策者不满意,则不分配碎片。

在可以找到分片副本的情况下,行为也已更改。以前,如果没有保存分片副本的节点都满足分配决策者,则选择不保持分片副本的节点。现在,分片将被分配给具有分片副本的节点,即使没有保存分片副本的节点满足分配决定符。