I have two solr instances, one is for development and index preparation while second is the one that is serving user for their requests (deployment system). Development solr is in local mode and deployment is in cloud mode.
After the finalization of index in development, I have to mode its index to deployment. How can I do it while core names are different on both systems.
Is there any better approach to synch development and deployment solr ?
Unless both clusters have the exact same configuration behind the scenes (i.e. the same number of nodes, replicas, etc.), indexing directly to your production nodes is the easiest solution. If the configuration is identical, you can use the Backup and restore functionality for SolrCloud to make it work.
Otherwise you'll have one set of index files that doesn't match the structure necessary for deploying it across all your server nodes.
If you're only working with a single shard for each collection (adding optional replicas), dropping the cloud mode and going back to old school replication would work, where you index to a master node and the nodes used for querying all replicate their index from this node instead.
If the reason why you want to do this is because you don't want to expose any new data before indexing is finished, you can achieve that in two other, better ways:
Index to your regular collection, but don't invoke commit before you've added all the documents. Unless you commit, no changes will be visible to the querying clients.
Create an alias of your current collection. Use the collection alias for all queries from your clients. Index into a copy of your collection (create a new collection with the same configset you're using for the original collection). When finished, point the alias to the new collection and delete the old one. Repeat each time you're updating the index.