【问题标题】:Elastic Search using river-jdbc to sync data with remote mysql serverElastic Search 使用 River-jdbc 与远程 mysql 服务器同步数据
【发布时间】:2015-04-01 14:42:39
【问题描述】:

我和我的团队想在我们的项目中使用弹性搜索,但是我们有一个要求,我们不想为每个节点使用本地 mysql 实例。我们想使用 mysql 数据的远程服务器来存储弹性搜索服务正在查询的数据。

所以想法是每次在本地 ES 服务器上添加新项目时,不是添加到本地实例,而是添加到 mysql 的远程服务器上(我们认为是在亚马逊 RDS 上)。对于任何索引的搜索查询,我们希望 ES 节点查询远程数据库(在 RDS 实例上)。

我们尝试使用具有两种风格(用于提取数据的河流)和馈线(用于将数据放在 RDS 实例上)的 river-jbdc。但是我们无法使用 river-jdbc 使其工作。

有人尝试类似的东西吗?或者任何人都可以链接到制作此内容的博客吗?

感谢您的帮助

提前致谢

【问题讨论】:

    标签: mysql jdbc elasticsearch amazon-rds


    【解决方案1】:

    我们使用类似的方法。我们使用 Oracle 数据库作为主数据存储。

    我们使用 PLSQL 来展平/转换数据。对于初始加载,我们将数据(记录)添加到“oneshot”表中。数据的更新将被展平/转换,并导致“更新”表中的记录。 oneshot 和更新表将映射到 Elasticsearch 中的单个索引。

    ES的初始加载:

    [Oracle DB]--->扁平化数据(pl sql)-->[记录到animal_oneshot_river表,记录到user_oneshot_river表]

    数据会被拉到例如http://localhost/9200/zoo/animalhttp://localhost/9200/zoo/user)

    更新

    [软件]---->更改数据--->[Oracle DB]--->展平数据(pl sql)-->[记录到animal_update_river表,记录到user_update_river表]

    更新表还包含一种更改类型(插入、更新或删除)。

    河流将轮询 update_river 表以获取更新并改变 Elasticsearch 中的数据(我们使用拉取)。经河流处理后,记录将被删除。

    对 Elasticsearch 的数据更改不会发送到 Oracle。主数据存储上的所有更改都将由我们自己的业务逻辑软件完成。

    我们还将数据写入 _spare 表 (animal_oneshot_river_spare),因为这样可以在不停机和同步问题的情况下重新加载 Elasticsearch(我们在重新加载 Elasticsearch 后切换别名)。

    【讨论】:

    • 感谢您的帮助@Jasper,我们的主要目标是使用 River-plugin 将数据从弹性搜索索引移动到 JDBC 数据库,我认为使用 River 是不可能的。所以我们需要创建一种使用我们自己的代码填充 JDBC 表的方法。他们使用河流来提供弹性搜索上的索引
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    相关资源
    最近更新 更多