如何设置附加到Azure存储的Azure搜索软删除策略

时间:2019-05-15 08:41:26

标签: c# azure azure-storage azure-search indexer

我有一个Azure Search,它使用Azure Storage作为数据源。每当尝试在Search中删除文件时,我都试图让Storage从其结果中删除文件,但是我似乎无法实现。

到目前为止,我已经尝试在Storage上设置软删除策略以将文件再保留7天,并在Search上设置软删除策略以检查元数据列IsDeleted,如果true从结果中删除该项目。然后使用代码更改元数据,然后按如下所示删除文件:

blob.Metadata["IsDeleted"] = "true";
blob.SetMetadataAsync().Wait();
blob.DeleteAsync().Wait();

如果没有删除,它似乎可以正常工作,但是我猜想Search即使文件仍然保留,也无法再访问元数据。我假设事情已经很简单了,但我似乎找不到。

1 个答案:

答案 0 :(得分:1)

简短的回答是,您不能在Azure搜索中使用软删除Blob。

将blob从存储中软删除时,出于所有意图和目的,将删除blob。您无法先删除Blob,然后再对其执行任何操作。它也不会作为常规Blob列表过程的一部分返回。

由于这个事实,当索引器运行以获取Blob列表时,它找不到软删除的Blob。标记从搜索服务索引器角度删除的Blob的唯一方法是将Blob保留在存储中,并将您正在执行的元数据属性“ IsDeleted”设置为“ true”。