Azure搜索服务REST API删除错误:“文档密钥不能丢失或为空。”

时间:2019-02-22 19:14:06

标签: azure azure-storage azure-search

当尝试使用Azure Search Service REST API删除Blob存储Blob /文档时,我看到一些间歇性和奇怪的行为。有时,它有时行得通,我知道了:

  

请求无效。详细信息:操作:0:无法输入文档密钥   丢失或为空。

enter image description here

一旦开始出现此错误,当我尝试删除该索引中存储的任何文档/ blob时,结果相同。我确实将“ metadata_storage_path”列为索引键(请参见下文)。
我无法再次使查询成功,否则我将检查Fiddler中的差异。

enter image description here

我也尝试过以下运气不好的事情:

  1. 重置并重新运行关联的搜索索引器。
  2. 针对同一容器创建新的索引器和索引,然后从其中删除。
  3. 创建一个新的容器,索引器和索引并从中删除。

还有其他建议或想法吗?

2 个答案:

答案 0 :(得分:0)

复制/粘贴错误:“元数据存储名称”应为“元数据存储路径”。

[在此处插入头撞墙表情符号。]

答案 1 :(得分:0)

对于那些仍在寻找解决方案的人...

代替id,

{  
  "value": [  
    {  
      "@search.action": "delete",
      "id":"TDVRT0FPQXcxZGtTQUFBQUFBQUFBQT090fdf"
    } 
  ]  
} 

使用摆脱你的文档来删除。

{  
  "value": [  
    {  
      "@search.action": "delete",
      "rid":"TDVRT0FPQXcxZGtTQUFBQUFBQUFBQT090fdf"
    } 
  ]  
} 

因为在创建搜索索引时,您可能选择了rid 作为您的唯一ID 列。

注意:我们只能删除具有唯一 ID 列的文档。