Class ShardsLimitAllocationDecider
- java.lang.Object
-
- org.elasticsearch.cluster.routing.allocation.decider.AllocationDecider
-
- org.elasticsearch.cluster.routing.allocation.decider.ShardsLimitAllocationDecider
-
public class ShardsLimitAllocationDecider extends AllocationDecider
ThisAllocationDeciderlimits the number of shards per node on a per index or node-wide basis. The allocator prevents a single node to hold more thanindex.routing.allocation.total_shards_per_nodeper index andcluster.routing.allocation.total_shards_per_nodeglobally during the allocation process. The limits of this decider can be changed in real-time via a the index settings API.If
index.routing.allocation.total_shards_per_nodeis reset to a negative value shards per index are unlimited per node. Shards currently in therelocatingstate are ignored by thisAllocationDecideruntil the shard changed its state to eitherstarted,inializingorunassignedNote: Reducing the number of shards per node via the index update API can trigger relocation and significant additional load on the clusters nodes.
-
-
Field Summary
Fields Modifier and Type Field Description static Setting<java.lang.Integer>CLUSTER_TOTAL_SHARDS_PER_NODE_SETTINGControls the maximum number of shards per node on a global level.static Setting<java.lang.Integer>INDEX_TOTAL_SHARDS_PER_NODE_SETTINGControls the maximum number of shards per index on a single Elasticsearch node.static java.lang.StringNAME
-
Constructor Summary
Constructors Constructor Description ShardsLimitAllocationDecider(Settings settings, ClusterSettings clusterSettings)
-
Method Summary
Modifier and Type Method Description DecisioncanAllocate(RoutingNode node, RoutingAllocation allocation)Returns aDecisionwhether the given node can allow any allocation at all at this state of theRoutingAllocation.DecisioncanAllocate(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation)Returns aDecisionwhether the given shard routing can be allocated on the given node.DecisioncanRemain(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation)Returns aDecisionwhether the given shard routing can be remain on the given node.-
Methods inherited from class org.elasticsearch.cluster.routing.allocation.decider.AllocationDecider
canAllocate, canAllocate, canForceAllocatePrimary, canRebalance, canRebalance
-
-
-
-
Field Detail
-
NAME
public static final java.lang.String NAME
- See Also:
- Constant Field Values
-
INDEX_TOTAL_SHARDS_PER_NODE_SETTING
public static final Setting<java.lang.Integer> INDEX_TOTAL_SHARDS_PER_NODE_SETTING
Controls the maximum number of shards per index on a single Elasticsearch node. Negative values are interpreted as unlimited.
-
CLUSTER_TOTAL_SHARDS_PER_NODE_SETTING
public static final Setting<java.lang.Integer> CLUSTER_TOTAL_SHARDS_PER_NODE_SETTING
Controls the maximum number of shards per node on a global level. Negative values are interpreted as unlimited.
-
-
Constructor Detail
-
ShardsLimitAllocationDecider
public ShardsLimitAllocationDecider(Settings settings, ClusterSettings clusterSettings)
-
-
Method Detail
-
canAllocate
public Decision canAllocate(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation)
Description copied from class:AllocationDeciderReturns aDecisionwhether the given shard routing can be allocated on the given node. The default isDecision.ALWAYS.- Overrides:
canAllocatein classAllocationDecider
-
canRemain
public Decision canRemain(ShardRouting shardRouting, RoutingNode node, RoutingAllocation allocation)
Description copied from class:AllocationDeciderReturns aDecisionwhether the given shard routing can be remain on the given node. The default isDecision.ALWAYS.- Overrides:
canRemainin classAllocationDecider
-
canAllocate
public Decision canAllocate(RoutingNode node, RoutingAllocation allocation)
Description copied from class:AllocationDeciderReturns aDecisionwhether the given node can allow any allocation at all at this state of theRoutingAllocation. The default isDecision.ALWAYS.- Overrides:
canAllocatein classAllocationDecider
-
-