How to control how the indices distribute its shards to the data node?

Hi all
I have now a total of 4 data node, 1 i just recently added to the cluster. So now some of the indices in the cluster are moving its shard to that new node that i installed. but some how they are not evently distributed. For example, there is an index that i config with 12 shard, so i imagine that each node now will have 3 shard in total, but they are not moving the way i wanted at all.
Is there a way for me to control how the indices will move it shard around or or some command that i can use to move the shard to i node that i want.

Thank in advance!

What is it doing then?

Well it seem like what happen to me just because the node was newly added to our cluster so the shard movement is a little bit off.
But still i want to be able to tell which shard is going to which node by hand since not all data node in my cluster have the same performance. i want the important shard to go to the high performance shard and the less important goes to the slower one
Is that possible?

You can use allocation filtering on the index level to do that - https://www.elastic.co/guide/en/elasticsearch/reference/7.6/shard-allocation-filtering.html