Sounds like what you want are three separate elasticsearch-clusters instead of a single cluster (formed of three elasticsearch-nodes).
Otherwise please rephrase your question and add some more information.
Actually what you see is what elasticsearch does. It spreads it's data over all the nodes in it's cluster.
What @Ljapunov said is absolutely true, and you should never do what I am about to suggest for your usecase. But if you really really really want to you could use the api to stop shard reallocation/balancing.
KEEP IN MIND THIS BREAKS A LOT OF THINGS
READ THAT AGAIN!
This option stops foundational functionality of elasticsearch and is not just for your specific indices but for ALL indices. Please read up on the docs of shard allocation and balancing before doing this.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.