你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

添加、更新或删除文档(预览版 REST API)

适用于:2023-07-01-Preview。 此版本不再受支持。 将立即升级到较新版本

重要

2023-07-01-Preview 添加:

  • 支持文档中的矢量字段。

可以使用 HTTP POST 将包含矢量字段的文档推送到指定的索引中。 对于大型更新,批处理(每个批最多 1000 个文档或每批大约 16 MB)可提高索引性能。

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

URI 参数

参数 描述
服务名称 必填。 将此值设置为搜索服务的唯一用户定义的名称。
索引名称 必填。 将此值设置为接收文档的索引的名称。 一次只能将文档发布到一个索引。
api-version 有关更多版本,请参阅 API 版本

请求标头

下表描述了必需的和可选的请求标头。

领域 描述
Content-Type 必填。 将此值设置为 application/json
api-key 如果使用 Azure 角色,并且请求中提供了持有者令牌,则为可选,否则需要密钥。 api-key 是唯一的系统生成的字符串,用于对搜索服务的请求进行身份验证。 上传文档需要管理员 API 密钥。 有关详细信息,请参阅 使用密钥身份验证 连接到 Azure AI 搜索。

请求正文

请求的正文包含要编制索引的一个或多个文档。 文档通过区分大小写的键进行唯一标识。 每个文档都与操作相关联:“upload”、“delete”、“merge”或“mergeOrUpload”。 上传请求必须包含文档数据作为一组键/值对。

矢量字段的类型为 Collection(Edm.Single)。 矢量数据由单精度浮点数数组组成。

矢量字段可以包含数千个嵌入内容,具体取决于原始内容的复杂性、长度或类型。 Azure AI 搜索不会将内容转换为嵌入内容。 推送到索引的文档必须包含之前生成的嵌入内容。

{  
  "value": [  
    {  
      "@search.action": "upload (default) | merge | mergeOrUpload | delete",  
      "key_field_name": "unique_key_of_document", (key/value pair for key field from index schema)  
      "field_name": field_value (key/value pairs matching index schema),
      "vector_field_name": [ array of single-precision floating point numbers ]
        ...  
    },  
    ...  
  ]  
}  
财产 描述
@search.action 必填。 有效值为“upload”、“delete”、“merge”或“mergeOrUpload”。 默认值为“upload”。
key_field_name 必填。 索引中的字段定义,用作文档键,并且仅包含唯一值。 文档键只能包含字母、数字、短划线("-")、下划线("_")和等号("="),并且区分大小写。
field_name 必填。 名称值对,其中字段的名称与索引定义中的字段名称相对应。 该值是用户定义的,但必须对字段类型有效。

响应

状态代码:为成功的响应返回 200,这意味着所有项都已持久存储,并且索引已开始。 索引在后台运行,并在索引操作完成后几秒钟内提供新的文档(即可查询和可搜索)。

当所有项的状态属性设置为 true 时,指示成功编制索引。 statusCode 属性应为 201(对于新上传的文档)或 200(对于合并或删除的文档)。

例子

示例:上传两个包含文本和矢量内容的文档

为了提高可读性,以下示例显示了文档和嵌入的子集。 上传文档请求的正文由 108 个文档组成,每个文档都有一组完整的嵌入“titleVector”和“contentVector”。

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/index?api-version={{api-version}}
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "value": [
        {
            "id": "1",
            "title": "Azure App Service",
            "content": "Azure App Service is a fully managed platform for building, deploying, and scaling web apps. You can host web apps, mobile app backends, and RESTful APIs. It supports a variety of programming languages and frameworks, such as .NET, Java, Node.js, Python, and PHP. The service offers built-in auto-scaling and load balancing capabilities. It also provides integration with other Azure services, such as Azure DevOps, GitHub, and Bitbucket.",
            "category": "Web",
            "titleVector": [
                -0.02250031754374504,
                 . . . 
                        ],
            "contentVector": [
                -0.024740582332015038,
                 . . .
            ],
            "@search.action": "upload"
        },
        {
            "id": "2",
            "title": "Azure Functions",
            "content": "Azure Functions is a serverless compute service that enables you to run code on-demand without having to manage infrastructure. It allows you to build and deploy event-driven applications that automatically scale with your workload. Functions support various languages, including C#, F#, Node.js, Python, and Java. It offers a variety of triggers and bindings to integrate with other Azure services and external services. You only pay for the compute time you consume.",
            "category": "Compute",
            "titleVector": [
                -0.020159931853413582,
                . . .
            ],
            "contentVector": [
                -0.02780858241021633,,
                 . . .
            ],
            "@search.action": "upload"
        }
        . . .
    ]
}

注意

将具有时区信息的 DateTimeOffset 值上传到索引时,Azure AI 搜索将这些值规范化为 UTC。 例如,2019-01-13T14:03:00-08:00 将存储为 2019-01-13T22:03:00Z。 如果需要存储时区信息,请将额外的列添加到索引中。

另请参阅