postgresql - 将表从 postgres 数据库同步/导入到 elasticsearch 的正确方法是什么?

标签 postgresql elasticsearch

我想将一些表从 postgres 数据库导入到 Elastic search 中,并使这些表与 elastic search 中的数据保持同步。我看过一个关于 udemy 的类(class),还与一位在这个问题上有很多经验的同事交谈,看看最好的方法是什么。我很惊讶地听到他们两个的消息,这似乎是最好的方法,就是用 python、java 或其他一些语言编写代码来处理这个导入并同步它,这让我想到了我的问题。这实际上是处理这种情况的最佳方法吗?似乎会有一个库、插件或其他东西来处理将数据导入 Elasticsearch 并将其与外部数据库保持同步的情况。处理这种情况的最佳方法是什么?

最佳答案

这取决于您的用例。通常的做法是在应用层处理这个问题。基本上,您所做的是将一个数据库的操作复制到另一个数据库。因此,例如,如果您在 postgres 中保存一个条目,您在 elasticsearch 中也会做同样的事情。

但是,如果您这样做,则必须有一个适当的排队系统。队列集成在您的应用程序层上,例如如果在 elasticsearch 中保存失败,那么您可以重播该操作。此外,在您的排队系统上,您将实现节流机制,以免压倒 elasticsearch。另一种方法是将事件发送到另一个应用程序(例如 logstash 等),因此节流和持久性将由该系统而不是您的应用程序处理。

另一种方法是 https://www.elastic.co/blog/logstash-jdbc-input-plugin .您使用另一个系统“轮询”您的数据库并将更改发送到 elasticsearch。在这种情况下,logstash 是理想的,因为它是 ELK 堆栈的一部分,并且具有很好的集成。也检查一下 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html

另一种方法是使用 NOTIFY postgres 将事件发送到某个队列的机制,该队列将处理保存 elasticsearch 中的更改。

关于postgresql - 将表从 postgres 数据库同步/导入到 elasticsearch 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49425827/

相关文章:

postgresql - ActiveRecord#first 方法是否总是返回具有最小 ID 的记录?

postgresql - 如何为 postgres 日志文件夹设置卷 - 权限被拒绝错误

sql - 将同一个表中的 2 个 SQL 查询合并为单个输出

php - 未找到结果时显示消息 POSTGRESQL PHP

c# - 使用 NEST 进行 Elasticsearch - 异步操作

docker - Elasticsearch不持久化数据,docker-compose

php - 在 Codeigniter + PostgreSql 中使用 $this->db->num_rows()

hadoop - 无法将数据从Hive加载到ElasticSearch

amazon-web-services - 无法通过aws公共(public)IP连接到Elasticsearch

elasticsearch - 在索引时间合并来自不同来源的数据