|  | @@ -57,17 +57,18 @@ one of the active allocation ids in the cluster state.
 | 
	
		
			
				|  |  |  [[shards-rebalancing-settings]]
 | 
	
		
			
				|  |  |  ==== Shard rebalancing settings
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -A cluster is _balanced_ when it has an equal number of shards on each node
 | 
	
		
			
				|  |  | -without having a concentration of shards from any index on any node. {es} runs
 | 
	
		
			
				|  |  | -an automatic process called _rebalancing_ which moves shards between the nodes
 | 
	
		
			
				|  |  | -in your cluster to improve its balance. Rebalancing obeys all other shard
 | 
	
		
			
				|  |  | -allocation rules such as <<cluster-shard-allocation-filtering,allocation
 | 
	
		
			
				|  |  | -filtering>> and <<forced-awareness,forced awareness>> which may prevent it from
 | 
	
		
			
				|  |  | -completely balancing the cluster. In that case, rebalancing strives to achieve
 | 
	
		
			
				|  |  | -the most balanced cluster possible within the rules you have configured. If you
 | 
	
		
			
				|  |  | -are using <<data-tiers,data tiers>> then {es} automatically applies allocation
 | 
	
		
			
				|  |  | -filtering rules to place each shard within the appropriate tier. These rules
 | 
	
		
			
				|  |  | -mean that the balancer works independently within each tier.
 | 
	
		
			
				|  |  | +A cluster is _balanced_ when it has an equal number of shards on each node, with
 | 
	
		
			
				|  |  | +all nodes needing equal resources, without having a concentration of shards from
 | 
	
		
			
				|  |  | +any index on any node. {es} runs an automatic process called _rebalancing_ which
 | 
	
		
			
				|  |  | +moves shards between the nodes in your cluster to improve its balance.
 | 
	
		
			
				|  |  | +Rebalancing obeys all other shard allocation rules such as
 | 
	
		
			
				|  |  | +<<cluster-shard-allocation-filtering,allocation filtering>> and
 | 
	
		
			
				|  |  | +<<forced-awareness,forced awareness>> which may prevent it from completely
 | 
	
		
			
				|  |  | +balancing the cluster. In that case, rebalancing strives to achieve the most
 | 
	
		
			
				|  |  | +balanced cluster possible within the rules you have configured. If you are using
 | 
	
		
			
				|  |  | +<<data-tiers,data tiers>> then {es} automatically applies allocation filtering
 | 
	
		
			
				|  |  | +rules to place each shard within the appropriate tier. These rules mean that the
 | 
	
		
			
				|  |  | +balancer works independently within each tier.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  You can use the following settings to control the rebalancing of shards across
 | 
	
		
			
				|  |  |  the cluster:
 | 
	
	
		
			
				|  | @@ -84,7 +85,6 @@ Enable or disable rebalancing for specific kinds of shards:
 | 
	
		
			
				|  |  |  * `none` -        No shard balancing of any kind are allowed for any indices.
 | 
	
		
			
				|  |  |  --
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |  `cluster.routing.allocation.allow_rebalance`::
 | 
	
		
			
				|  |  |  +
 | 
	
		
			
				|  |  |  --
 | 
	
	
		
			
				|  | @@ -98,13 +98,32 @@ Specify when shard rebalancing is allowed:
 | 
	
		
			
				|  |  |  --
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  `cluster.routing.allocation.cluster_concurrent_rebalance`::
 | 
	
		
			
				|  |  | -      (<<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | -      Allow to control how many concurrent shard rebalances are
 | 
	
		
			
				|  |  | -      allowed cluster wide. Defaults to `2`. Note that this setting
 | 
	
		
			
				|  |  | -      only controls the number of concurrent shard relocations due
 | 
	
		
			
				|  |  | -      to imbalances in the cluster. This setting does not limit shard
 | 
	
		
			
				|  |  | -      relocations due to <<cluster-shard-allocation-filtering,allocation
 | 
	
		
			
				|  |  | -      filtering>> or <<forced-awareness,forced awareness>>.
 | 
	
		
			
				|  |  | +(<<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | +Defines the number of concurrent shard rebalances are allowed across the whole
 | 
	
		
			
				|  |  | +cluster. Defaults to `2`. Note that this setting only controls the number of
 | 
	
		
			
				|  |  | +concurrent shard relocations due to imbalances in the cluster. This setting does
 | 
	
		
			
				|  |  | +not limit shard relocations due to
 | 
	
		
			
				|  |  | +<<cluster-shard-allocation-filtering,allocation filtering>> or
 | 
	
		
			
				|  |  | +<<forced-awareness,forced awareness>>.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +`cluster.routing.allocation.type`::
 | 
	
		
			
				|  |  | ++
 | 
	
		
			
				|  |  | +--
 | 
	
		
			
				|  |  | +Selects the algorithm used for computing the cluster balance. Defaults to
 | 
	
		
			
				|  |  | +`desired_balance` which selects the _desired balance allocator_. This allocator
 | 
	
		
			
				|  |  | +runs a background task which computes the desired balance of shards in the
 | 
	
		
			
				|  |  | +cluster. Once this background task completes, {es} moves shards to their
 | 
	
		
			
				|  |  | +desired locations.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +May also be set to `balanced` to select the legacy _balanced allocator_. This
 | 
	
		
			
				|  |  | +allocator was the default allocator in versions of {es} before 8.6.0. It runs
 | 
	
		
			
				|  |  | +in the foreground, preventing the master from doing other work in parallel. It
 | 
	
		
			
				|  |  | +works by selecting a small number of shard movements which immediately improve
 | 
	
		
			
				|  |  | +the balance of the cluster, and when those shard movements complete it runs
 | 
	
		
			
				|  |  | +again and selects another few shards to move. Since this allocator makes its
 | 
	
		
			
				|  |  | +decisions based only on the current state of the cluster, it will sometimes
 | 
	
		
			
				|  |  | +move a shard several times while balancing the cluster.
 | 
	
		
			
				|  |  | +--
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  [[shards-rebalancing-heuristics]]
 | 
	
		
			
				|  |  |  ==== Shard balancing heuristics settings
 | 
	
	
		
			
				|  | @@ -114,28 +133,55 @@ of shards, and then moving shards between nodes to reduce the weight of the
 | 
	
		
			
				|  |  |  heavier nodes and increase the weight of the lighter ones. The cluster is
 | 
	
		
			
				|  |  |  balanced when there is no possible shard movement that can bring the weight of
 | 
	
		
			
				|  |  |  any node closer to the weight of any other node by more than a configurable
 | 
	
		
			
				|  |  | -threshold. The following settings allow you to control the details of these
 | 
	
		
			
				|  |  | -calculations.
 | 
	
		
			
				|  |  | +threshold.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +The weight of a node depends on the number of shards it holds and on the total
 | 
	
		
			
				|  |  | +estimated resource usage of those shards expressed in terms of the size of the
 | 
	
		
			
				|  |  | +shard on disk and the number of threads needed to support write traffic to the
 | 
	
		
			
				|  |  | +shard. {es} estimates the resource usage of shards belonging to data streams
 | 
	
		
			
				|  |  | +when they are created by a rollover. The estimated disk size of the new shard
 | 
	
		
			
				|  |  | +is the mean size of the other shards in the data stream. The estimated write
 | 
	
		
			
				|  |  | +load of the new shard is a weighted average of the actual write loads of recent
 | 
	
		
			
				|  |  | +shards in the data stream. Shards that do not belong to the write index of a
 | 
	
		
			
				|  |  | +data stream have an estimated write load of zero.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +The following settings control how {es} combines these values into an overall
 | 
	
		
			
				|  |  | +measure of each node's weight.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  `cluster.routing.allocation.balance.shard`::
 | 
	
		
			
				|  |  | -     (<<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | -     Defines the weight factor for the total number of shards allocated on a node
 | 
	
		
			
				|  |  | -     (float). Defaults to `0.45f`. Raising this raises the tendency to
 | 
	
		
			
				|  |  | -     equalize the number of shards across all nodes in the cluster.
 | 
	
		
			
				|  |  | +(float, <<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | +Defines the weight factor for the total number of shards allocated to each node.
 | 
	
		
			
				|  |  | +Defaults to `0.45f`. Raising this value increases the tendency of {es} to
 | 
	
		
			
				|  |  | +equalize the total number of shards across nodes ahead of the other balancing
 | 
	
		
			
				|  |  | +variables.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  `cluster.routing.allocation.balance.index`::
 | 
	
		
			
				|  |  | -     (<<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | -     Defines the weight factor for the number of shards per index allocated
 | 
	
		
			
				|  |  | -      on a specific node (float). Defaults to `0.55f`. Raising this raises the
 | 
	
		
			
				|  |  | -      tendency to equalize the number of shards per index across all nodes in
 | 
	
		
			
				|  |  | -      the cluster.
 | 
	
		
			
				|  |  | +(float, <<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | +Defines the weight factor for the number of shards per index allocated to each
 | 
	
		
			
				|  |  | +node. Defaults to `0.55f`. Raising this value increases the tendency of {es} to
 | 
	
		
			
				|  |  | +equalize the number of shards of each index across nodes ahead of the other
 | 
	
		
			
				|  |  | +balancing variables.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +`cluster.routing.allocation.balance.disk_usage`::
 | 
	
		
			
				|  |  | +(float, <<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | +Defines the weight factor for balancing shards according to their predicted disk
 | 
	
		
			
				|  |  | +size in bytes. Defaults to `2e-11f`. Raising this value increases the tendency
 | 
	
		
			
				|  |  | +of {es} to equalize the total disk usage across nodes ahead of the other
 | 
	
		
			
				|  |  | +balancing variables.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +`cluster.routing.allocation.balance.write_load`::
 | 
	
		
			
				|  |  | +(float, <<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | +Defines the weight factor for the write load of each shard, in terms of the
 | 
	
		
			
				|  |  | +estimated number of indexing threads needed by the shard. Defaults to `10.0f`.
 | 
	
		
			
				|  |  | +Raising this value increases the tendency of {es} to equalize the total write
 | 
	
		
			
				|  |  | +load across nodes ahead of the other balancing variables.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  `cluster.routing.allocation.balance.threshold`::
 | 
	
		
			
				|  |  | -     (<<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | -     Minimal optimization value of operations that should be performed (non
 | 
	
		
			
				|  |  | -      negative float). Defaults to `1.0f`. Raising this will cause the cluster
 | 
	
		
			
				|  |  | -      to be less aggressive about optimizing the shard balance.
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +(float, <<dynamic-cluster-setting,Dynamic>>)
 | 
	
		
			
				|  |  | +The minimum improvement in weight which triggers a rebalancing shard movement.
 | 
	
		
			
				|  |  | +Defaults to `1.0f`. Raising this value will cause {es} to stop rebalancing
 | 
	
		
			
				|  |  | +shards sooner, leaving the cluster in a more unbalanced state.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  NOTE: Regardless of the result of the balancing algorithm, rebalancing might
 | 
	
		
			
				|  |  | -not be allowed due to forced awareness or allocation filtering.
 | 
	
		
			
				|  |  | +not be allowed due to allocation rules such as forced awareness and allocation
 | 
	
		
			
				|  |  | +filtering.
 |