In the documentation I have read somewhere that setting up HA for APM server is to setup multiple APM servers and put a load-balancer in front of those.
Perhaps here: https://www.elastic.co/guide/en/apm/server/current/high-availability.html
@jhun4m welcome to the forum. As Peter says, you can use a regular load balancer in front of multiple APM Servers. Agents can also be configured with a list of servers, and they will failover in case a server becomes inaccessible or unresponsive. The latter approach will not load-balance data over the multiple servers, so it depends on whether you really want active-passive or active-active HA.
Has anyone implemented APM Server in high availability?
Yes, the APM Server that comes as part of Elasticsearch Service will be run in an HA mode when you configure multiple availability zones, and/or multiple instances.
indices on elastic cluster will be duplicated as there are 2 APM Server?
Not as long as you use the default index template configuration in apm-server.yml, and have the same versions of apm-server. (By default the index pattern includes the server version.)