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

重要

索引别名目前根据补充使用条款以公共预览版提供。

在 Azure AI 搜索中,索引别名是一个辅助名称,可用于引用索引以执行查询、编制索引等操作。 你可以创建一个映射到搜索索引的别名,并在可能引用索引名称的位置替换该别名。 如果需要更改应用程序所指向的索引,别名会提供更大的灵活性。 可以仅更新别名的映射,而无需更新对应用程序中的引用。

索引别名的主要目标是更加轻松地实现生产索引管理。 例如,如果需要更改索引定义(例如编辑字段或添加新分析器),则必须创建新的搜索索引,因为所有搜索索引均不可变。 这意味着你需要删除并重新生成索引,或者创建新的索引,然后将应用程序迁移到该索引。

你可以使用索引别名,而不是删除并重新生成索引。 典型的工作流程是:

  1. 创建搜索索引
  2. 创建映射到搜索索引的别名
  3. 让应用程序将查询/编制索引请求发送到别名而不是索引名称
  4. 在需要对需要重新生成的索引进行更改时,创建一个新的搜索索引
  5. 在新索引准备就绪时,更新别名以映射到新索引,请求将自动路由到新索引

创建索引别名

可以使用预览版 REST API、预览版 SDK 或通过 Azure 门户创建别名。 别名包含别名的 name,以及别名映射到的搜索索引的名称。 在 indexes 数组中只能指定一个索引名称。

可以使用创建或更新别名(REST 预览)创建索引别名。

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

将请求发送到索引别名

创建别名后,便可以开始使用它了。 别名可用于所有文档操作,包括查询、编制索引、建议和自动完成。

在下面的查询中,你可以将请求发送到 my-alias,系统会对该请求进行相应路由(而不是将请求发送到 hotel-samples-index)。

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

如果希望更新生产索引,请在客户端应用程序中指定一个别名而不是索引名称。 删除并重建索引中概述了需要重建索引的情况。

注意

只能将别名用于文档操作,或用于获取和更新索引定义。 别名不能用于删除索引,不能与分析文本 API 一起使用,也不能用作索引器上的 targetIndexName

对别名的更新最长可能需要 10 秒的时间才能在系统中传播,因此你应该至少等待 10 秒,然后再在已映射或最近映射到别名的索引中执行任何操作。

交换索引

现在,每当你需要更新应用程序以指向新索引时,只需更新别名中的映射即可。 如创建或更新别名(REST 预览)中所述,更新需要 PUT。

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

更新别名后,系统会自动开始将请求路由到新索引。

注意

对别名进行的更新可能需要 10 秒才能在系统中传播,因此在删除别名之前映射到的索引之前,应等待至少 10 秒钟。

另请参阅