【问题标题】:Azure Search Service REST API Delete Error: "Document key cannot be missing or empty."Azure 搜索服务 REST API 删除错误:“文档密钥不能丢失或为空。”
【发布时间】:2019-07-16 22:30:17
【问题描述】:

我在尝试使用 Azure Search Service REST API 删除 blob 存储 blob/文档时看到一些间歇性和奇怪的行为。它有时有效,有时我得到这个:

请求无效。详细信息:操作:0:文档键不能 丢失或为空。

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

我也尝试了以下方法,但没有成功:

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

还有其他建议或想法吗?

【问题讨论】:

    标签: azure azure-storage azure-cognitive-search


    【解决方案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 列的文档。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 2019-02-14
      • 2017-04-11
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多