从postgres数据库向elasticsearch导入表的正确方法是什么?[英] What is the right way to snyc/import tables from a postgres DB to elasticsearch?

本文是小编为大家收集整理的关于从postgres数据库向elasticsearch导入表的正确方法是什么?的处理方法,想解了从postgres数据库向elasticsearch导入表的正确方法是什么?的问题怎么解决?从postgres数据库向elasticsearch导入表的正确方法是什么?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我想将一些表从 postgres 数据库导入到 Elastic 搜索中,并让这些表与弹性搜索中的数据保持同步.我看过有关 udemy 的课程,还与一位在此问题上经验丰富的同事进行了交谈,以了解最好的方法是什么.听到他们俩的消息,我感到很惊讶,这似乎是最好的方法,就是用 python、java 或其他处理此导入的语言编写代码并同步它,这让我想到了我的问题.这实际上是处理这种情况的最佳方法吗?似乎会有一个库、插件或其他东西来处理将数据导入弹性搜索并将其与外部数据库保持同步的情况.处理这种情况的最佳方法是什么?

推荐答案

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

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

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

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

本文地址:https://www.itbaoku.cn/post/1763941.html