如何保持elasticsearch数据与MySql同步?

How to keep elasticsearch data in sync with MySql?

我正在使用 spring-data-jpa 将数据保存到 MySql 我最近实施了 spring-data-elasticsearch 在 INSERT 上将数据插入 ES(例如上传新照片)。

现在显然这只会插入初始数据,很快就会变得陈旧。

instagram为例:

  1. 你post一张照片
    • 照片(照片对象 - 描述、位置、标签)
    • 用户(post编辑的用户)
    • 没有赞 (0)
    • 没有评论 (0)

所有这些数据都将插入 photo 索引下 elasticsearch。当用户开始喜欢评论照片时,数据将变得陈旧

我们该如何解决这个问题?!

Would we create a cronjob/task which would go through all the photos and insert each of them into elasticsearch every X minutes (this would mean removing all current indexes for photo)?! This seems like it'd take a long time and use a lot of resources!

不是再次插入所有数据,我们会简单地更新所有当前的 elasticsearch 索引吗?

你做了什么来解决这个问题?

执行此操作的标准方法是在数据库中保留最后更新的列类型,并在发生更改时更新它。

然后您的索引器只需要从您上次成功索引数据后从数据库中查询任何内容。

根据您的可靠性,您可能仍需要定期进行全面比较。