在 Azure AI 搜索中创建索引别名
重要
索引别名目前根据补充使用条款以公共预览版提供。
在 Azure AI 搜索中,索引别名是一个辅助名称,可用于引用索引以执行查询、编制索引等操作。 你可以创建一个映射到搜索索引的别名,并在可能引用索引名称的位置替换该别名。 如果需要更改应用程序所指向的索引,别名会提供更大的灵活性。 可以仅更新别名的映射,而无需更新对应用程序中的引用。
索引别名的主要目标是更加轻松地实现生产索引管理。 例如,如果需要更改索引定义(例如编辑字段或添加新分析器),则必须创建新的搜索索引,因为所有搜索索引均不可变。 这意味着你需要删除并重新生成索引,或者创建新的索引,然后将应用程序迁移到该索引。
你可以使用索引别名,而不是删除并重新生成索引。 典型的工作流程是:
- 创建搜索索引
- 创建映射到搜索索引的别名
- 让应用程序将查询/编制索引请求发送到别名而不是索引名称
- 在需要对需要重新生成的索引进行更改时,创建一个新的搜索索引
- 在新索引准备就绪时,更新别名以映射到新索引,请求将自动路由到新索引
创建索引别名
可以使用预览版 REST API、预览版 SDK 或通过 Azure 门户创建别名。 别名包含别名的 name
,以及别名映射到的搜索索引的名称。 在 indexes
数组中只能指定一个索引名称。
可以使用创建或更新别名(REST 预览)创建索引别名。
POST /aliases?api-version=2024-05-01-preview
{
"name": "my-alias",
"indexes": ["hotel-samples-index"]
}
将请求发送到索引别名
创建别名后,便可以开始使用它了。 别名可用于所有文档操作,包括查询、编制索引、建议和自动完成。
在下面的查询中,你可以将请求发送到 my-alias
,系统会对该请求进行相应路由(而不是将请求发送到 hotel-samples-index
)。
POST /indexes/my-alias/docs/search?api-version=2024-05-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=2024-05-01-preview
{
"name": "my-alias",
"indexes": ["hotel-samples-index2"]
}
更新别名后,系统会自动开始将请求路由到新索引。
注意
对别名进行的更新可能需要 10 秒才能在系统中传播,因此在删除别名之前映射到的索引之前,应等待至少 10 秒钟。