【问题标题】:Using elasticsearch-river-mysql to stream data from MySQL database to Elasticsearch使用 elasticsearch-river-mysql 将数据从 MySQL 数据库流式传输到 Elasticsearch
【发布时间】:2014-05-14 15:07:19
【问题描述】:

我想使用elasticsearch-river-mysql 来不断地将数据从 MySQL 数据库传输到 ElasticSearch。我是 ES 和 Rivers 的初学者,所以我希望你能帮助我解决我的问题。

  1. 据我所知,数据将从 MySQL 数据库流式传输到 ES 集群,ES 集群将自动对其进行索引。那是对的吗?我必须注意任何超时或限制吗?
  2. 关系数据库表之间的外键关系如何翻译成ES?包含外键的表行会成为 ES 文档的内部对象,还是会使用 ES 文档之间的某种其他关系?
  3. 将这条河流用于上述目的有什么缺点吗?
  4. 实施这个会给 ES 带来什么负载?我认为 ES 足够强大,但我仍然想知道。在这种情况下,在 ES 集群上进行的搜索是否会受到影响?

【问题讨论】:

  • 您的 MySQL 数据库中有多少条目?
  • 我的建议是尝试使用elasticsearch-jdbc-river,原因有很多。其中之一是 elasticsearch-jbdc-river 更通用,以防您决定切换 RDBMS,另一个是 jbdc-river 仍然在另一个 2 年以来没有维护过,并且 Elasticsearch 发展了很多自从
  • 以下是我们数据库的一些统计数据:条目总数为 919161598,表总数为 314,总大小 258.5GB,最大的表包含 121942658 个条目,大小为 25GB。所以一个非常庞大的数据库。我们有很多挑选销售不断向数据库添加新数据(不包含系统的新添加功能)。数据库的增长约为每月 10GB。您可以看到为什么我们在执行繁重而复杂的查询(尤其是用于报告的查询)时开始遇到一些性能问题。
  • @eliasah 感谢您的建议。 elasticsearch-jdbc-river 是否支持 MySQL 复制流?
  • 我不确定您所说的 MySQL 复制流是什么意思。

标签: mysql elasticsearch


【解决方案1】:

我的建议是尝试使用elasticsearch-jdbc-river,原因有很多。

其中之一是elasticsearch-jbdc-river 更通用,以防您决定切换RDBMS

另一个是 jbdc-river 在另一个 2 年没有维护的情况下仍然保持不变,从那时起 Elasticsearch 发展了很多。

1.据我所知,数据将从 MySQL 数据库流式传输到 ES 集群,ES 集群将自动对其进行索引。那是对的吗?我必须注意任何超时或限制吗?

来自 MySQL 的数据应该自动从 MySQL 流式传输到 Elasticsearch 集群,没有超时限制,但瓶颈将是您的 JVM 堆大小。我不确定你需要多少数据来处理你拥有的数据量。你需要测试一下。

2。关系数据库表之间的外键关系如何翻译成ES?包含外键的表行会成为 ES 文档的内部对象,还是会使用 ES 文档之间的某种其他关系?

Elasticsearch 是无模式的,因此您需要 manage to the inside Elasticsearch。河流只是将数据流式传输到您的集群中。您可以在创建索引时定义映射,然后使用河流将其流式传输到 ES 集群。

3.将这条河用于上述目的有什么缺点吗?

河流将被替换为另一种更清洁的方式来传输这些数据,但这是您目前拥有的最佳解决方案。

【讨论】:

  • 开发中有哪些替代/更清洁的方法?这条河似乎仍在积极维护中,并且会留下来,对吧?
  • 我可能会想到 Logstash。我不确定。我还没有尝试过这种方法。但我认为您也许可以使用 Logstash 将数据流从数据库转发到 elasticsearch 集群
猜你喜欢
  • 2013-10-04
  • 2017-11-24
  • 2019-04-15
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 2013-06-23
相关资源
最近更新 更多