# 集合别名
别名是指向实际集合的虚拟集合名称。如果你熟悉 Linux 中的符号链接,这个概念非常相似。
在任何使用集合名称的 API 调用中,你都可以使用别名来代替集合名称。 Typesense 会在内部将别名解析为它所指向的实际集合名称,并使用该集合执行操作(搜索、写入等)。
# 使用场景
别名(alias)的一个常见使用场景是:在新集合上后台重新索引数据,然后无需修改代码即可让应用程序切换到新集合。
下面是一个示例:
假设我们有一个名为 companies_june10
的集合,以及一个指向该集合的别名 companies
。
companies ---> companies_june10
在我们的应用程序中,所有搜索 API 调用都将使用别名 companies
,而不是直接使用集合名称 companies_june10
:
curl "http://localhost:8108/multi_search" \
-X POST \
-H "Content-Type: application/json" \
-H "X-TYPESENSE-API-KEY: ${TYPESENSE_API_KEY}" \
-d '{
"searches": [
{
"collection": "companies",
"q": "Acme"
}
]
}'
由于 companies
是一个别名,Typesense 会在内部将 "collection": "companies"
解析为 companies_june10
,并针对该集合执行搜索。
第二天(6月11日),假设我们需要重新索引整个数据集。我们可以创建一个名为 companies_june11
的新集合,并开始在后台将文档索引到这个新集合中。
当索引完成后,如果我们更新 companies
别名使其指向新集合 companies_june11
,应用程序会立即开始将搜索请求发送到这个新索引的集合,因为我们在搜索查询中使用了别名名称(如上所示)。
companies ---> companies_june11
很方便,不是吗?现在让我们看看如何创建、更新和管理别名。
# 创建或更新别名
# 示例响应
# 定义
PUT ${TYPESENSE_HOST}/aliases/:alias
# 参数
参数名 | 是否必填 | 描述 |
---|---|---|
collection_name | 是 | 要映射到该别名的集合名称。 |
# 检索别名
我们可以通过获取别名来查看它指向哪个集合。
# 示例响应
# 定义
GET ${TYPESENSE_HOST}/aliases/:alias
# 列出所有别名
列出所有别名及其映射的对应集合。
# 示例响应
# 定义
GET ${TYPESENSE_HOST}/aliases
# 删除别名
# 示例响应
# 定义
DELETE ${TYPESENSE_HOST}/aliases/:alias