Het hangt af van uw gebruiksscenario. Een gangbare praktijk is om dit op de applicatielaag af te handelen. Wat u eigenlijk doet, is de acties van de ene db naar de andere repliceren. Dus als u bijvoorbeeld één item opslaat in postgres, doet u hetzelfde in elasticsearch.
Als u dit echter doet, moet u een wachtrijsysteem hebben. Ofwel is de wachtrij geïntegreerd in uw applicatielaag, b.v. als het opslaan in elasticsearch mislukt, kunt u de bewerking opnieuw afspelen. Bovendien implementeer je op je wachtrijsysteem een beperkingsmechanisme om elasticsearch niet te overweldigen. Een andere benadering zou zijn om gebeurtenissen naar een andere app te sturen (bijv. logstash, enz.), zodat de beperking en persistentie worden afgehandeld door dat systeem en niet door uw toepassing.
Een andere benadering is deze https://www.elastic.co/blog/ logstash-jdbc-input-plugin . U gebruikt een ander systeem dat uw database "peilt" en de wijzigingen naar elasticsearch stuurt. In dit geval is logstash ideaal omdat het deel uitmaakt van de ELK-stack en het een geweldige integratie heeft. Controleer dit ook https://www.elastic. co/guide/en/logstash/current/plugins-inputs-jdbc.html
Een andere benadering is het gebruik van de NOTIFY mechanisme van postgre om gebeurtenissen naar een wachtrij te sturen die de wijzigingen in elasticsearch zal opslaan.