ES Update on PostgreSQL DB CRUD operations


I am working in a production environment where a PostgreSQL DB stores all the date, and I pull all data into ES. Now I need to keep updating my ES DB to be in sync after CRUD on PostgreSQL. I see various methods of doing this but I am not very much convinced on the efficiency.

I have a Java program which indexes ES and also contacts PostgreSQL. Could anyone please suggest the best method of updating the DB? I know I can use timestamp to check for change in tables. But its seems inefficient- going through the entire record to check for time miss match. Also there is a problem with deleted entries.

Help appreciated ! Thanks