🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 分配改变 原文链接 : [https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_allocation.html](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/breaking_50_allocation.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=4260787](http://www.apache.wiki/pages/viewpage.action?pageId=4260787) 贡献者 : [片刻](/display/~jiangzhonglian) ## 主分片分配 以前,只有在发现仲裁副本的法定数量时才分配主分片(可以使用index.recovery.initial_shards配置,现在已弃用)。在原版仅具有单个副本的情况下,将定额定义为单个分片。这意味着任何具有复制因子1的索引的分片副本都可以成为主要副本,即使它是磁盘上的数据的过期副本。由于shard分配ID,这现在是固定的。 分配ID为分片副本分配唯一标识符。这允许集群在相同数据的多个副本之间进行区分,并且跟踪哪些分片已经活动,使得在集群重新启动之后,只有包含最近数据的分片副本可以成为主要。 ## 索引分片存储命令 通过使用分配ID而不是版本号来标识主分片分配的分片副本,以前的版本控制方案已过时。这反映在[索引分片存储命令API](https://www.elastic.co/guide/en/elasticsearch/reference/5.0/indices-shards-stores.html)中。 新的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的行为已更改。以前,在没有找到分片副本的情况下,通过潜在地忽略分配决定器来选择任意节点。现在,我们考虑平衡,但是如果分配决策者不满意,则不分配碎片。 在可以找到分片副本的情况下,行为也已更改。以前,如果没有保存分片副本的节点都满足分配决策者,则选择不保持分片副本的节点。现在,分片将被分配给具有分片副本的节点,即使没有保存分片副本的节点满足分配决定符。