No, a primary shard won't lose data if it goes down, the extra docs in the replica must have been added after the primary went down when that replica was promoted new primary. A shard is a Lucene index, with immutable segments, and I doubt very much it can lose one or more segments, if so I would think the entire shard would be marked as bust and not come back up.
One theory is that when the original primary went down it still hadn't had time to update the replica with all its documents so when the replica became the new primary it had less documents than the old primary (not sure if that can happen, but it's a theory). So when the old primary came back online, now as a replica, it still had more docs because the new primary hadn't been indexed to yet (the index being RED, remember).
If that is what happened you would expect the old primary to have the best data so that's the shard you should keep in the index not the new primary.
As far as I know there is no force sync API, your best bet would be to use the Cluster Reroute API that I mentioned earlier, it allows you to select one of the shards and promote it to primary status.
By the way, when I first started looking at Elasticsearch I heard repeatedly that it should not be used for primary data storage, that you should always keep the original data in a safe backup or repository somewhere. Even five years later that seems like a good advice, things can still go wrong like in the example with the stale primary shard and then data may get lost.