As best practice as there any limit on number of indices in elastic search

I want to do logging of 100+ microservices. So is it good practice to have separate index for every microservice (index=MS name) ??

No, generally it is not. Each index consists of one or more shards and having lots of small shards is very inefficient and wastes resources. Please read this blog post for more details.

Unless you have conflicting mappings I would recommend microservices to share indices, possible based on retention requirements so you actieve a reasonably large aversage shard size.