删除
Deletes(删除)
Quickwit 通过 delete API 支持删除操作。需要注意的是,此功能主要用于遵守 GDPR(通用数据保护条例),并且应谨慎使用,因 为删除操作成本较高:通常建议每小时或每天执行几次查询即可。
Delete tasks(删除任务)
针对特定索引的删除任务将在删除任务创建之前创建的所有分片上执行。如果删除查询匹配多个分片中的文档,这可能是一个持续很长时间的任务,可能需要几个小时。
为了跟踪执行进度,每个删除任务都会分配一个唯一的递增标识符,称为“操作戳记”或 opstamp
。所有现有分片都将接受删除操作,并且在成功后,每个分片的元数据将更新为相应的操作戳记。
在删除任务创建之后创建的所有分片将具有大于或等于删除任务 opstamp
的 opstamp
(如果有其他删除任务同时创建,则更大)。
Quickwit 对给定分片批量执行删除操作:例如,如果某个分片的删除 opstamp = n
,而最新创建的删除任务的 opstamp = n + 10
,那么将在该分片上一次性执行十个(10)删除查询。
Delete API
删除任务通过 Delete REST API 创建。
Pitfalls(常见问题)
Immature splits(不成熟的分片)
删除操作仅应用于“成熟的”分片,即不再进行合并的分片。分片是否成熟取决于 合并策略。可以定义 maturation_period
,在此期间之后分片将变为成熟。因此,在 t0
时刻创建的删除请求将首先应用于成熟的分片,并且在最坏的情况下,将等待至 t0 + maturation_period
时刻,让不成熟的分片变得成熟。
Monitoring and dev XP(监控和开发体验)
目前无法监控删除操作。已有一个 issue 开启以改善开发体验,欢迎添加您的评论并关注其进展。