我在确保索引没有损坏时遇到问题。因此,我执行添加和索引操作的方式可确保索引不与我的数据库取消同步:
这意味着索引请求在索引中的顺序与DB始终同步无关紧要。 Delete
操作会出现问题。可能存在Add
请求在Delete
之后出现并且文档被重新添加的情况,即使它不应该。我知道Lucene不会立即删除文档。有没有办法知道已删除文件的ID?或者,检查已删除文档的版本?如果是删除请求后多长时间文档存在于索引中?
答案 0 :(得分:0)
也许这可行: 1.当文档被删除时,它不会从索引中删除,而是被"删除文档"替换。这可以通过引入具有相同ID的空文档的概念来实现,该文档在删除"删除"时将用空文档替换现有文档。 2.在每次插入之前,检查文档是否是"删除文档"如果是,则跳过插入/索引操作,如果文档不存在或者不是"删除文档"然后索引文档。这基本上是需要完成的额外工作,但允许运行删除和添加乱序。
依赖于lucene可能在某个地方保留的已删除文档列表中的ID,将会产生额外的时间限制。 Lucene / ES会在需要时清除已删除的文档。