Solución:
Si también necesita ser notificado sobre DELETE y eliminar el registro respectivo en Elasticsearch, es cierto que la entrada jdbc de Logstash no ayudará. Tendría que usar una solución que funcione con el binlog como se sugiere aquí
Sin embargo, si aún desea utilizar la entrada jdbc de Logstash, lo que podría hacer es simplemente eliminar registros en PostgreSQL, es decir, crear una nueva columna BOOLEAN para marcar sus registros como deleted
. La misma bandera existiría entonces en Elasticsearch y puede excluirlos de sus búsquedas con un simple term
consulta sobre el deleted
campo.
Siempre que necesite realizar alguna limpieza, puede eliminar todos los registros marcados deleted
tanto en PostgreSQL como en Elasticsearch.
También puede echar un vistazo a PGSync.
Es similar a Debezium pero mucho más fácil de poner en marcha.
PGSync es una herramienta de captura de datos modificados para mover datos de Postgres a Elasticsearch. Le permite mantener Postgres como su fuente de verdad y exponer documentos desnormalizados estructurados en Elasticsearch.
Simplemente define un esquema JSON que describe la estructura de los datos en Elasticsearch.
Aquí hay un esquema de ejemplo: (también puede tener objetos anidados)
p.ej
{ "nodes": [ { "table": "book", "columns": [ "isbn", "title", "description" ] } ] }
PGsync genera consultas para su documento sobre la marcha. No es necesario escribir consultas como Logstash. También admite y realiza un seguimiento de las operaciones de eliminación.
Opera tanto un sondeo como un modelo impulsado por eventos para capturar los cambios realizados hasta la fecha y notificar los cambios que ocurren en un momento determinado. La sincronización inicial sondea la base de datos en busca de cambios desde la última vez que se ejecutó el demonio y, a partir de entonces, la notificación de eventos (basada en desencadenadores y manejada por pg-notify) para cambios en la base de datos.
Tiene muy poca sobrecarga de desarrollo.
- Cree un esquema como se describe arriba
- apunte pgsync en su base de datos de Postgres y clúster de Elasticsearch
- Inicie el demonio.
Puede crear fácilmente un documento que incluya varias relaciones como objetos anidados. PGSync realiza un seguimiento de los cambios por usted.
Eche un vistazo al repositorio de github para obtener más detalles.
Puede instalar el paquete desde PyPI
Por favor, eche un vistazo a Debezium. Es una plataforma de captura de datos modificados (CDC), que le permite actualizar sus datos
Creé un repositorio de github simple, que muestra cómo funciona