【问题标题】:PostgreSQL + Elasticsearch synchronization in JAVA spring (JPA)JAVA spring (JPA) 中的PostgreSQL + Elasticsearch 同步
【发布时间】:2018-08-07 03:30:03
【问题描述】:

我们使用 JAVA Spring (JPA),在应用程序中我们在 PostgreSQL 中写入、修改和删除数据。

如何在 PostgreSQL 和 Elasticsearch 之间同步数据?因此,它们将具有相同的数据。

【问题讨论】:

标签: spring postgresql jpa elasticsearch spring-data


【解决方案1】:

我同意 Vijay 关于一般方法的观点。

基本上,您可以使用 Logstash 记录您的 PostgreSQL 数据,方法是使用 Logstash 中的 pgjdbc 驱动程序(简单的 .jar)直接连接到 PostgreSQL,并使用logstash.conf 编写 SQL 查询以从 PostgreSQL 中获取数据。

我最近在 Towards Data Science 中写了一篇关于 Spring Boot + PostgreSQL 和 ELK 堆栈以及如何设置(包括指向示例项目的 GitHub 存储库链接)的综合指南,您可以在此处找到:https://towardsdatascience.com/a-hitchhikers-guide-to-spring-boot-elasticsearch-logstash-kibana-postgresql-and-docker-5602feaa9fd3

我希望它对使用这个堆栈的每个人都有帮助(即使你不使用 Spring Boot 而只是使用 Spring)

如果你不想阅读这篇文章,这里有一个直接指向 GitHub 的链接:https://github.com/tech4242/spring-elastic-genie

【讨论】:

    【解决方案2】:

    我假设您使用 PosgreSQL 作为主存储来存储您的数据,并使用 Elasticsearch 作为辅助存储来索引来自 PosgreSQL 的数据以进行搜索。

    我建议 Logstash 是最好的选择。您将创建一个将 PosgreSQL 与 elasticsearch 连接起来的配置文件。使用 JDBC 输入插件和 elasticsearch 输出插件并使用该配置文件运行 Logstash。从那里开始同步每个文档。

    您还有其他一些选择:

    批量同步:编写应用程序/脚本 (perl/python) 以从 PosgreSQL 中提取数据以索引到 Elasticsearch。您可以安排此作业在您希望的特定时间执行。

    实时同步:在您成功将记录插入/更新到 PostgreSQL 后,您在同一 API 中发送请求以索引/更新此记录到 Elasticsearch。

    【讨论】:

      猜你喜欢
      • 2016-06-19
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      • 2020-03-07
      • 1970-01-01
      • 2020-08-06
      • 2015-01-19
      • 1970-01-01
      相关资源
      最近更新 更多