Class BalancedShardsAllocator.Balancer
java.lang.Object
org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.Balancer
- Enclosing class:
- BalancedShardsAllocator
-
Constructor Summary
ConstructorDescriptionBalancer
(org.apache.logging.log4j.Logger logger, RoutingAllocation allocation, org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.WeightFunction weight, float threshold) -
Method Summary
Modifier and TypeMethodDescriptionfloat
Returns the global average of shards per nodefloat
avgShardsPerNode
(String index) Returns the average of shards per node for the given indexdecideMove
(ShardRouting shardRouting) Makes a decision on whether to move a started shard to another node.void
Move started shards that can not be allocated to a node anymore For each shard to be moved this function executes a move operation to the minimal eligible node with respect to the weight function.
-
Constructor Details
-
Balancer
public Balancer(org.apache.logging.log4j.Logger logger, RoutingAllocation allocation, org.elasticsearch.cluster.routing.allocation.allocator.BalancedShardsAllocator.WeightFunction weight, float threshold)
-
-
Method Details
-
avgShardsPerNode
Returns the average of shards per node for the given index -
avgShardsPerNode
public float avgShardsPerNode()Returns the global average of shards per node -
moveShards
public void moveShards()Move started shards that can not be allocated to a node anymore For each shard to be moved this function executes a move operation to the minimal eligible node with respect to the weight function. If a shard is moved the shard will be set toShardRoutingState.RELOCATING
and a shadow instance of this shard is created with an incremented version in the stateShardRoutingState.INITIALIZING
. -
decideMove
Makes a decision on whether to move a started shard to another node. The following rules apply to theMoveDecision
return object: 1. If the shard is not started, no decision will be taken andMoveDecision.isDecisionTaken()
will return false. 2. If the shard is allowed to remain on its current node, no attempt will be made to move the shard andMoveDecision.getCanRemainDecision()
will have a decision type of YES. All other fields in the object will be null. 3. If the shard is not allowed to remain on its current node, thenMoveDecision.getAllocationDecision()
will be populated with the decision of moving to another node. IfMoveDecision.forceMove()
()} returnstrue
, thenAbstractAllocationDecision.getTargetNode()
will return a non-null value, otherwise the assignedNodeId will be null. 4. If the method is invoked in explain mode (e.g. from the cluster allocation explain APIs), thenAbstractAllocationDecision.getNodeDecisions()
will have a non-null value.
-