我使用容器资源管理器从我的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"
}
]
}