首页 > 解决方案 > 如何在 Azure 搜索 REST API 上使用“id”删除特定文档?

问题描述

我想知道如何删除 Azure 搜索索引中的特定文档。

我想使用“id”通过 REST API 删除文档。我已经搜索过,但找不到路。

{
    "@odata.context": "https://xxxx/$metadata#docs(*)",
    "value": [
        {
            "@search.score": 1,
            "id": "16",
            "questions": [
                "Question"
            ],
            "answer": "Answer",
            "source": "https://azure.microsoft.com/ja-jp/support/faq/",
            "keywords": [],
            "alternateQuestions": null
 },

例如,我只想删除 id 为 16 的文档。我不想删除整个索引,只想删除该文档。

如果有人知道怎么做,请提供一个 REST API 示例。

标签: azureazure-cognitive-search

解决方案


可以在此处找到有关如何在 Azure 搜索中删除“文档”的文档。 由于您要删除与 id == 16 关联的所有字段,因此这应该是您要查找的内容。

为了更具体地了解您的具体情况,您需要向以下 URI 发出 POST 请求,并填写适当的服务名称、索引名称和 api 管理密钥(作为标头):

POST https://[service name].search.windows.net/indexes/[index name]/docs/index?api-version=2017-11-11  
Content-Type: application/json   
api-key: [admin key]  

并带有以下请求正文:

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

如果请求返回 200,则文档将已成功从索引中删除。

请注意,您可以通过在 JSON 数组中包含更多对象来删除同一请求中的多个文档,每个对象都有不同的“id”。这比一次删除一个更有效。


推荐阅读