最终,我想为PostgreSql中的数据提供一个可扩展的搜索解决方案。我的发现指向我使用Logstash将写入事件从Postgres传送到ElasticSearch,但是我没有找到可用的解决方案。我发现的解决方案涉及使用jdbc- input 间隔查询Postgres的 所有 数据,并且不捕获删除事件。
我认为这是一个常见的用例,因此我希望你们可以与我分享您的经验,或者给我一些指导。
如果还需要通知DELETE并删除Elasticsearch中的相应记录,那么Logstash jdbc输入确实没有帮助。您必须按照此处的建议使用解决方案来处理binlog
但是,如果仍然要使用Logstashjdbc输入,则可以做的就是在PostgreSQL中简单地软删除记录,即创建一个新的BOOLEAN列以将记录标记为deleted。然后,Elasticsearch中将存在相同的标志,您可以term通过对该deleted字段进行简单查询就将它们从搜索中排除。
deleted
term
每当需要执行一些清理时,都可以删除deletedPostgreSQL和Elasticsearch中标记的所有记录。