我有MySQL DB,其中一个表没有连接 ~1亿行。这些项目可以更新或删除,并且新记录也会定期保存到 MySQL DB 中,例如每一分钟。如何在Elasticsearch中更新索引
when data is updated/changed/deleted in MySQL DB?
对我来说,实现数据必须与MySQL保持同步非常重要。可能吗?感谢。
此外,我已尝试使用schedule => "* * * * *" and updated_at > :sql_last_value
解决方案,但速度非常慢。
答案 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