In my use case I would like to change the no of shards in data node config. I want the data node to read the updated config without rebouncing. Is there a way to do that[ an API call may be?]
I don't think that's possible, but you should control the number of shards for newly created indexes by other means than a static setting in elasticsearch.yml. Either specify it when an index is created or use an index template.
The only way to pick up config file changes is by bouncing the node.
You can control the number of shards via other means though such as the index settings (when you create the index), or via index templates.
Thank you for the info. I have large amount of data. When I rebounce the process es might relocate shards from that node. That will affect the query performance. Is there any workaround for this?
You can use delayed allocation.
It'll help with allocation, but it may not help with query performance.