Ok. Like @Mysterion said, it's not possible to change the number of shards with zero-downtime directly with an index update. But there is another way around.
You'll be needing to re-index your old index into an new index after creating it with the desired number of shards. (Like I said no zero-downtime)
For that you can use the Scroll Search API :
While a search request returns a single “page” of results, the scroll API can be used to retrieve large numbers of results (or even all results) from a single search request, in much the same way as you would use a cursor on a traditional database.
Scrolling is not intended for real time user requests, but rather for processing large amounts of data, e.g. in order to reindex the contents of one index into a new index with a different configuration.
Client support for scrolling and reindexing :
Some of the officially supported clients provide helpers to assist with scrolled searches and reindexing of documents from one index to another:
Perl
See Search::Elasticsearch::Bulk and Search::Elasticsearch::Scroll
Python
See elasticsearch.helpers.*
For more information about the Scroll Search API, I suggest the official documentation
And you might also want to take a look at this answer here, maybe it can also give you some ideas in case you are using Java.