It would be great to have RebalanceShards action in SolrCloud, such like described in this post by Suruchi Shah : "http://engineering.bloomreach.com/solrcloud-rebalance-api/"
By the way, in order to rebalance shards from a collection with replicationFactor > 1, one idea could be to split some shards using the rule-based replica placement.
Since https://issues.apache.org/jira/browse/SOLR-8728 jira issue, splitShard is using rule-based replica placement (for the "replication" replicas).
As part of a proof of concept, the attached patch introduce a new action to the collections API, named "REBALANCESHARDS", to rebalance some or all shards among solrCloud nodes using splitShard.
After each splitShard, a deleteshard of the inactive parent shard is done.
One mandatory parameter:
- collection: the name of the collection
- deltaMaxFromAverage (default: 20): use to select n shards (<= half of all shards) to be split, whose number of docs are greater than deltaMaxFromAverage percent of the average number of docs per shard
- force (default: false): if true, in case of none shards selected with the deltaMaxFromAverage given, all shards of the collection will be selected to be split
Drawbacks: replicationFactor must be more than one, select shards based on the average number of docs per shard is not suitable for all cases