In our application we would like to index around 2-3 million documents what should be the best cluster/Shard configuration ?

Hard to tell, since I don't know the size of the documents. You will need to do some capacity planning. Generally, the default 5 shards should be more than enough for 2-3 million, and depending on the docs, you can even use lower number of shards (will use less memory).

Our initial load consists of indexing 2-3 million records what are configuration we should make in elastic search so that we achieve faster indexing for initial load ?

Indexing rate really depends on many factors. As for scaling out, the default 5 shards set for an index will mean you can grow upto 5 machines. If oyu have 1 replica (the default), then you can grow up to 10 machines without hitting a wall.

Currenlty we have a batch process which spawns 10 threads this threads sends request over to elastic search server? Do we forsee any issue with this approach (like write lock)?

No, no issues here. Check that your indexing machine is not the bottleneck.