在 Azure AI 搜索 中创建索引别名

在Azure AI 搜索中,索引别名是搜索索引的辅助名称。 可以创建映射到搜索索引的别名,并在引用索引名称的位置替换别名。 如果需要更改应用程序指向的索引,此功能可提供灵活性。 可以直接更新别名映射,而不是更新对生产代码中的索引名称的引用。

可以通过 HTTP 请求(POST、GET、PUT 或 DELETE)针对给定的别名资源在搜索服务上创建和管理别名。 别名是与搜索索引无关的独立服务级资源。 创建搜索索引后,可以创建映射到它的别名。

在使用别名之前,应用程序会将请求直接发送到 hotel-samples-index

POST /indexes/hotel-samples-index/docs/search?api-version=2026-04-01
{
    "search": "pool spa +airport",
    "select": "HotelId, HotelName, Category, Description",
    "count": true
}

使用别名后,应用程序会向my-alias发送请求,而my-alias映射到。

POST /indexes/my-alias/docs/search?api-version=2026-04-01
{
    "search": "pool spa +airport",
    "select": "HotelId, HotelName, Category, Description",
    "count": true
}

支持的方案

只能将别名用于文档操作,或用于获取和更新索引定义。

别名不能用于删除索引测试文本标记化,也不能作为targetIndexName索引器知识源引用。

创建索引别名

创建别名会在别名和索引名称之间建立映射。 如果请求成功,则可以使用别名进行索引、查询和其他操作。

可以使用 REST API、Azure SDK 或 Azure 门户创建别名。 别名由别名的name部分和别名映射到的搜索索引的名称组成。 只能在数组indexes中指定一个索引名称。

可以创建的别名的最大数目因定价层而异。 有关详细信息,请参阅 索引别名限制

使用最新的稳定版本的 别名 - 创建 (REST API) 创建索引别名。

POST /aliases?api-version=2026-04-01
{
    "name": "my-alias",
    "indexes": ["hotel-samples-index"]
}

将请求发送到索引别名

可以将别名用于所有文档操作,包括查询、索引、建议和自动完成。

以下查询将请求发送到my-alias,该请求已映射到搜索服务的实际索引。

POST /indexes/my-alias/docs/search?api-version=2026-04-01
{
    "search": "pool spa +airport",
    "searchMode": "any",
    "queryType": "simple",
    "select": "HotelId, HotelName, Category, Description",
    "count": true
}

获取别名定义

此请求按名称返回现有别名对象的列表。

GET https://[service name].search.azure.cn/aliases?api-version=[api-version]&$select=name
api-key: [admin key]  

此请求返回别名定义

GET https://[service name].search.azure.cn/aliases/my-alias?api-version=[api-version]
api-key: [admin key]  

更新别名

别名的最常见更新是在基础索引替换为较新版本时更改索引名称。

使用 别名 - 创建或更新 (REST API) 更新别名。 以下示例演示如何将 my-alias 更新为指向 hotel-samples-index2 而非指向 hotel-samples-index

PUT /aliases/my-alias?api-version=2026-04-01
{
    "name": "my-alias",
    "indexes": ["hotel-samples-index2"]
}

对别名的更新可能需要长达 10 秒才能传播到系统,因此请等待至少 10 秒,然后再删除之前映射别名的索引。

如果尝试删除当前映射到别名的索引,操作将失败,出现 400(错误请求)和错误消息,指出映射到该索引的别名(es)必须被删除或映射到其他索引,然后才能删除索引。