如何在更新,添加或删除数据时使用ES + Logstash + MySQL实现实时索引更新?

时间:2017-09-07 11:47:15

标签: mysql elasticsearch indexing logstash

我有MySQL DB,其中一个表没有连接 ~1亿行。这些项目可以更新或删除,并且新记录也会定期保存到 MySQL DB 中,例如每一分钟。如何在Elasticsearch中更新索引

when data is updated/changed/deleted in MySQL DB?

对我来说,实现数据必须与MySQL保持同步非常重要。可能吗?感谢。

此外,我已尝试使用schedule => "* * * * *" and updated_at > :sql_last_value解决方案,但速度非常慢。

2 个答案:

答案 0 :(得分:3)

不确定你是什么意思"非常慢" ,但如果它与采样频率有关,那么例如表达式schedule => "/2 * * * * *"将每两秒执行一次在.config文件中的语句变量中定义的查询。

答案 1 :(得分:2)

感谢所有人的回复,感谢Aaron Mildenstein帮我解决了讨论问题,我找到了解决方案。 See the thread here.

答案:

  

为了实现这一目标,您需要一个单独的进程来监视binlog事务并启动对Elasticsearch结束的更新。 Elastic目前不提供任何执行此操作的工具,因此您必须找到某人开源或编写自己的工具。

要解析binlogs,我使用了这个lib:https://github.com/siddontang/go-mysql-elasticsearch