Hmm... I was hoping to use node-client feature along with shard-specific-routing to make sure our updates go directly to a primary shard because our use case involves heavy batches being sent to ES for indexing and the presence of a node-client option would have allowed to save a network hop for reaching to primary.
If node-client was present, we could do:
storm-bolt ----directly-to------> ES primary
But without node-client, we have to:
storm-bolt ---------> Any ES node (could be replica) --------redirect-to-----> ES primary
We are guessing that node-client would have been more efficient (although we dont yet have data to prove it).
As a last resort, we plan to find out the primary ourselves (by running a background thread to know cluster state) and try to route to primary always.
Note that we plan to use routing option also so that bolts do not have to send to many primary shards. (We do not want to search by ID ever and are sure that we can balance the documents appropriately among shards).