我的mysql db,带有一个桌子,没有 〜1亿行。可以更新或删除这些项目,并将新记录保存到 mysql db 中,例如。每一分钟。我如何在Elasticsearch
中达到更新索引 when data is updated/changed/deleted in MySQL DB?
实现数据对我来说必须具有很重要的始终与MySQL保持最新非常重要。是否可以?谢谢。
我也尝试了schedule => "* * * * *" and updated_at > :sql_last_value
的解决方案,但它非常慢。
不确定"非常慢"是什么意思,但是如果这与采样频率有关,则表达式: schedule => "/2 * * * * *"
例如,将执行您在语句变量中定义的查询.config
文件每两秒钟。
感谢您对所有人的答复,我为我找到了解决方案,感谢Aaron Mildenstein帮助我讨论。请参阅这里的线程。
答案:
为了实现这一目标,您将需要一个单独的过程来监视Binlog Transactions并启动对事物的Elasticsearch End的更新。Elastic目前没有提供任何可以这样做的工具,因此您必须找到一个开源或编写您自己的人的工具。
要解析Binlogs我使用了此lib:https://github.com/siddontang/go-mysql-elasticsearch