Azure 搜索服务 REST API 删除错误:“文档密钥不能丢失或为空。”
Posted
技术标签:
【中文标题】Azure 搜索服务 REST API 删除错误:“文档密钥不能丢失或为空。”【英文标题】:Azure Search Service REST API Delete Error: "Document key cannot be missing or empty." 【发布时间】:2019-07-16 22:30:17 【问题描述】:我在尝试使用 Azure Search Service REST API 删除 blob 存储 blob/文档时看到一些间歇性和奇怪的行为。它有时有效,有时我得到这个:
请求无效。详细信息:操作:0:文档键不能 丢失或为空。
一旦我开始收到此错误,当我尝试删除存储在该索引中的任何文档/blob 时,结果相同。我确实将“metadata_storage_path”列为我的索引键(见下文)。 我无法让查询再次成功,否则我将检查 Fiddler 中的差异。
我也尝试了以下方法,但没有成功:
-
重置并重新运行关联的搜索索引器。
针对同一容器创建新的索引器和索引并从中删除。
创建新容器、索引器和索引并从中删除。
还有其他建议或想法吗?
【问题讨论】:
【参考方案1】:复制/粘贴错误:“metadata_storage_name”应该是“metadata_storage_path”。
[在此处插入撞墙表情符号。]
【讨论】:
抱歉回复晚了。你还在遇到这些问题吗?如果是,您能否将您的服务名称通过电子邮件发送给我,以便我调查日志?我的电子邮件是我在 microsoft dot com 的用户名(不带 -MSFT)。谢谢【参考方案2】:对于那些仍在寻找解决方案的人...
而不是id,
"value": [
"@search.action": "delete",
"id":"TDVRT0FPQXcxZGtTQUFBQUFBQUFBQT090fdf"
]
使用摆脱你的文档来删除。
"value": [
"@search.action": "delete",
"rid":"TDVRT0FPQXcxZGtTQUFBQUFBQUFBQT090fdf"
]
因为在创建搜索索引时,您可能选择了 rid 作为您的唯一 id 列。
注意:我们只能删除具有唯一 ID 列的文档。
【讨论】:
以上是关于Azure 搜索服务 REST API 删除错误:“文档密钥不能丢失或为空。”的主要内容,如果未能解决你的问题,请参考以下文章
Azure 使用 REST api 和托管标识创建 blob 容器 - 403 错误
如何修复“访问令牌来自错误的受众或资源。”尝试使用 MSAL 令牌访问 Azure 的 REST api 时
Azure blob 批量删除无法使用 rest API 删除多个文件