从PostgreSQL数据库到Elasticsearch snyc /导入表的正确方法是什么?

发布于 2021-02-01 11:49:19

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

关注者
0
被浏览
76
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    这取决于您的用例。通常的做法是在应用程序层上进行处理。基本上,您要做的是将一个数据库的操作复制到另一个数据库。因此,例如,如果您在postgres中保存一个条目,则在elasticsearch中执行相同的操作。

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看