一尘不染

使用ElasticSearch同步PostgreSql数据

elasticsearch

最终,我想为PostgreSql中的数据提供一个可扩展的搜索解决方案。我的发现指向我使用Logstash将写入事件从Postgres传送到ElasticSearch,但是我没有找到可用的解决方案。我发现的解决方案涉及使用jdbc-
input 间隔查询Postgres的 所有 数据,并且不捕获删除事件。

我认为这是一个常见的用例,因此我希望你们可以与我分享您的经验,或者给我一些指导。


阅读 1013

收藏
2020-06-22

共1个答案

一尘不染

如果还需要通知DELETE并删除Elasticsearch中的相应记录,那么Logstash
jdbc输入确实没有帮助。您必须按照此处的建议使用解决方案来处理binlog

但是,如果仍然要使用Logstashjdbc输入,则可以做的就是在PostgreSQL中简单地软删除记录,即创建一个新的BOOLEAN列以将记录标记为deleted。然后,Elasticsearch中将存在相同的标志,您可以term通过对该deleted字段进行简单查询就将它们从搜索中排除。

每当需要执行一些清理时,都可以删除deletedPostgreSQL和Elasticsearch中标记的所有记录。

2020-06-22