The cluster-level shard allocator tries to spread the shards of a single index across as many nodes as possible. However, depending on how many shards and indices you have, and how big they are, it may not always be possible to spread shards evenly.
The following dynamic setting allows you to specify a hard limit on the total number of shards from a single index allowed per node:
index.routing.allocation.total_shards_per_node
You can also limit the amount of shards a node can have regardless of the index:
cluster.routing.allocation.total_shards_per_node
These settings impose a hard limit which can result in some shards not being allocated.
Use with caution.