# 集合别名

别名是指向实际集合的虚拟集合名称。如果你熟悉 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