I would curl the Elastic Search indexes in node 1 and compare with what’s in node 2.
But the fact that node 1 works correctly after a restart, and the issue starts occurring after some time is strange.
Can you confirm each node persists its Elastic Search data in a durable manner ?
Does this occur in a prod environment or a test one? I’d try to connect API GW node 1 to Elastic Search node 2, and see if this continues to occur.