Azure认知搜索索引API按文件名删除



我使用容器资源管理器从我的Azure存储帐户中删除了一个与我的认知搜索相关的文件,因为索引器在我的Web应用程序中搜索该文件时仍然会找到该文件,我了解到我必须使用索引API删除该文件,因为它仍然存在,事实上,当我在Azure索引中查看时显示了以下响应:

{
"@search.score": 7.9088755,
"id": "aHR0cHM6Ly9kYXRhbWluaW5nc2EuYmxvYi5jb3JlLndpbmRvd3MubmV0L2RvY3VtZW50YWwvcGxhbl9wcmVtaXVtX3YxODZ2Mi5w****",
"fileName": "deleted_file.pdf"
}

但当我试图通过Postman使用删除Api时,正如文档所说,使用该id:

POST https://myservicename.search.windows.net/indexes/myindexname/docs/index?api-version=2020-06-30   
Content-Type: application/json   
api-key: [my admin key]  
{  
"value": [  
{  
"@search.action": "delete",  
"id": "aHR0cHM6Ly9kYXRhbWluaW5nc2EuYmxvYi5jb3JlLndpbmRvd3MubmV0L2RvY3VtZW50YWwvcGxhbl9wcmVtaXVtX3YxODZ2Mi5w****"
}
]  
} 

我得到了一个";404未找到":

{
"error": {
"code": "",
"message": "No HTTP resource was found that matches the request URI 'https://myservicename.search.windows.net/indexes('myindexname')/docs?api-version=2020-06-30'."
}
}

此外,尝试使用fileName如下:

POST https://myservicename.search.windows.net/indexes/myindexname/docs/index?api-version=2020-06-30   
Content-Type: application/json   
api-key: [my admin key]  
{  
"value": [  
{  
"@search.action": "delete",  
"fileName": "deleted_file.pdf"
}
]  
} 

得到了同样的结果,不知道为什么它在括号内点击了索引thoe,url和上面一样。。。我已经在索引上启用了软删除策略,文件从存储中消失,但在索引上仍然存在。。。知道吗?

确保您的Azure Storage帐户上没有启用ADLS Gen2。此外,如果您在Blob被软删除后启用了软删除策略,请确保更改Blob LastModified时间戳,以便该策略能够将更改应用于索引(https://learn.microsoft.com/en-us/azure/search/search-howto-index-changed-deleted-blobs)

实际上找到了解决方案,从Azure认知服务门户中提取的索引查询菜单中的id运行良好,也需要使用预览版修改url。我把它贴在这里,以防它对其他人有帮助:

POST https://myservicename.search.windows.net/indexes/myindexname/docs/index?api-version=2020-06-30-Preview   
Content-Type: application/json   
api-key: [my admin key]  
{  
"value": [  
{  
"@search.action": "delete",  
"id": "doc id extracted from index"
}
]  
} 

最新更新