2016-08-28 31 views
2

我使用弹簧数据的JPA坚持数据MySql的我最近实施弹簧数据elasticsearch将数据插入到ES上的INSERT(例如,新照片被上传)。如何保持弹性搜索数据与MySql同步?

现在很明显,这只是插入初始数据,不久之后它就会变陈旧。

让我们的Instagram为例:

  1. 您发布照片
    • 照片(照片对象 - 描述,位置,标签)
    • 用户(用户谁张贴)
    • 不喜欢(0)
    • 没有评论(0)

所有这些数据将下照片指数elasticsearch插入。当用户开始喜欢评论照片,数据将变为陈旧

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

请问我们创建了一个的cronjob /任务这将经历所有 的照片和他们每个人插入elasticsearch每隔X分钟 (这将意味着删除所有当前索引photo)?!这 似乎需要很长时间,并使用大量的资源!

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

您是如何解决这个问题的?

回答

3

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

然后,您的索引器只需从数据库中查询自上次成功索引数据以来的任何内容即可。

根据您可以做到的可靠程度,您可能仍需要定期进行全面比较。