使 elasticsearch 与密钥或版本控制保持同步

Keeping elasticsearch in sync with key or versioning

所以我遇到了很多大 XML 文件的情况,我希望在 elasticsearch 上同步这些数据。

当前方式

建议方式

这意味着在 500,000 个项目中,我只需添加例如已更改的 5,000 个项目,而不是复制 500,000 个项目。

问题

在这种情况下,如何确保它们已同步?例如,如果 elasticsearch 被擦除会发生什么,我如何告诉我的程序它需要再次添加所有内容。有没有办法在 elasticsearch 上使用某种同步密钥,或者更好的方法?

这是我推荐的...

  1. 在你的类型中添加一个存储字段来存储像 MD5 这样的散列

  2. 使用Scan/Scroll从ES中导出ID和Hash

  3. 在您的支持数据集中导出 ID 和哈希

  4. 使用类似 MapReduce 的东西来 "join" 对每个导出的 ID 设置

  5. 通过比较hash或发现有差异的地方 缺少钥匙,index/update

哈希仅在想要检测文档更改时才有用。这还假设您将 ES 的 ID 持久保存回您的后备存储或您自行分配 ID。