在索引器期间从Azure搜索索引中删除项目似乎很糟糕

roqulrg3  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(175)

所以我有一个大型的cosmodb文档数据库,我有一个索引和索引器,将通过构建这个索引来搜索。所有工作都很好。
但是,如果一个文档从源数据库中删除,搜索索引仍然包含它。
我知道有一个数据删除策略,但这似乎表明源数据库需要一个属性来指示软删除。但文档已被删除为真实的,数据库中没有软删除。
那么,为什么我不能让索引器删除源数据中不再存在的所有文档呢?

dhxwm5r4

dhxwm5r41#

因为它不知道文档被删除了。你可以这样想。它基本上是根据_ts跟踪一个包含最后处理的更改的光标(对文档的最后修改)。调度程序触发后,会根据该值执行查询以检查最新更改。它可以检测更新和插入,但是删除不能被检测到,因为查询不返回它们的任何更改。
如果你想让它工作,你可以做几件事:
1.添加软删除属性(例如isDeleted)。该属性在CosmosDb中更新,并通知Azure Search应删除文档。
1.结合您的CosmosDb上的ttl和生存时间策略执行上述操作,以便将来某个时间也从CosmosDb中删除该项目,时间跨度足够大,以便调度程序“保证”首先删除该项目。
1.使用SDK或REST API手动删除项目。

相关问题