跳到主要内容
版本:Cloud 开发指南

修改 Collection

在 Collection 创建完成后,您还可以对 Collection 的名称及相关设置进行修改。本文主要介绍如何修改 Collection 及进行修改操作时的注意事项。

重命名 Collection

如果您需要重命名 Collection,可以参考如下代码进行操作:

from pymilvus import MilvusClient

client = MilvusClient(
uri="YOUR_CLUSTER_ENDPOINT",
token="YOUR_CLUSTER_TOKEN"
)

client.rename_collection(
old_name="my_collection",
new_name="my_new_collection"
)

设置 Collection 属性

支持的属性

Property

Description

collection.ttl.seconds

如果您需要 Zilliz Cloud 在 Collection 创建完成后的一段时间内自动删除该 Collection 中的所有数据。可以考虑为 Collection 设置 TTL。这样当 Collection 的生存时间超过指定时间(单位为秒)后,Zilliz Cloud 就会开始删除 Collection 中的数据。

由于删除操作是异步的,在数据完全删除前,您仍旧可以搜索到部分数据。

更多内容,可以参考设置 Collection 生存时间

mmap.enabled

Memory mapping 支持通过内存来访问存放在磁盘上的数据和文件,从而使得 Zilliz Cloud 即可以将索引和原始数据存放在内存中,也可以将它们存放在磁盘上。您可以根据访问频率优化数据存放策略,在扩大 Collection 容量的同时保证搜索性能。

Zilliz Cloud 为您的集群提供了全局 mmap 策略。您可以为某个具体字段或该字段上的索引设置不同的 mmap 策略。

更多内容,可以参考使用 mmap

partitionkey.isolation

在开启 Partition Key 之后,Zilliz Cloud 会根据 Partition Key 的取值对 Collection 内的 Entity 进行分组并为每个组创建单独的索引。在收到搜索请求后,Zilliz Cloud 会根据搜索请求中的过滤条件里指定的 Partition Key 值定位到相应的索引,并将搜索范围限定在该索引对应的 Entity 中,从而避免在搜索过程中扫描与当前搜索请求不相关的 Entity,提升搜索效率。

更多内容,可以参考使用 Partition Key Isolation

dynamicfield.enabled

为在创建时未启用 Dynamic Field 的 Collection 启用该功能。启用后,您可以插入包含原始 Schema 中未定义字段的 Entity。详情请参阅 Dynamic Field

allow_insert_auto_id

用于控制在 Collection 已启用 Auto ID 时,是否允许该 Collection 接受用户提供的主键值。

  • 设置为 “true”:insert、upsert 和 bulk insert 在用户提供主键值时使用该值;否则自动生成主键值。

  • 设置为 “false”:拒绝或忽略用户提供的主键值,主键值始终自动生成。默认值为 “false”。

timezone

为该 Collection 指定默认时区,用于处理时间敏感操作,尤其是 TIMESTAMPTZ 字段。时间戳在内部以 UTC 存储,系统会根据该设置进行展示与比较时的转换。若配置了 Collection 级别的时区,它将覆盖 Database 的默认时区;Query 级别的 timezone 参数可临时覆盖两者。取值必须是有效的 IANA 时区标识符(如 Asia/ShanghaiAmerica/ChicagoUTC)。关于 TIMESTAMPTZ 字段的用法,请参阅 TIMESTAMPTZ 类型

示例 1:设置 Collection TTL

如下代码演示了如何设置 Collection 的生存时间(TTL)。

from pymilvus import MilvusClient

client.alter_collection_properties(
collection_name="my_collection",
properties={"collection.ttl.seconds": 60}
)

示例 2:开启 mmap

如下代码演示了如何开启 mmap。

from pymilvus import MilvusClient

client.alter_collection_properties(
collection_name="my_collection",
properties={"mmap.enabled": True}
)

示例 3:开启 Partition Key

如下代码演示了如何开启 Partition Key。

from pymilvus import MilvusClient

client.alter_collection_properties(
collection_name="my_collection",
properties={"partitionkey.isolation": True}
)

示例 4:开启 Dynamic Field

如下代码演示了如何开启 Dynamic Field。

from pymilvus import MilvusClient

client.alter_collection_properties(
collection_name="my_collection",
properties={"dynamicfield.enabled": True}
)

示例 5:开启 allow_insert_auto_id

allow_insert_auto_id 属性允许在启用 AutoID 的 Collection 中,在执行 insert、upsert 和 bulk import 操作时接收用户提供的主键值。当该属性设置为 "true" 时,Zilliz Cloud 会在检测到用户提供主键值时使用该值;若未提供,则自动生成主键值。默认值为 "false"

以下示例展示了如何启用 allow_insert_auto_id 属性:

client.alter_collection_properties(
collection_name="my_collection",
# highlight-next-line
properties={"allow_insert_auto_id": "true"}
)
# After enabling, inserts with a PK column will use that PK; otherwise Zilliz Cloud auto-generates.

示例 6:设置 Collection 时区

您可以使用 timezone 属性为 Collection 设置默认时区。该属性决定了在 Collection 内进行所有操作(包括数据插入、查询和结果展示)时,时间相关数据的解释和显示方式。

📘Notes

timezone 的值必须是有效的 IANA 时区标识符,例如 Asia/ShanghaiAmerica/ChicagoUTC。如果使用了无效或非标准的时区值,在修改 Collection 属性时会报错。

下面的示例演示如何将 Collection 的时区设置为 Asia/Shanghai

client.alter_collection_properties(
collection_name="my_collection",
# highlight-next-line
properties={"timezone": "Asia/Shanghai"}
)

删除 Collection 属性

你还可以参考如下代码示例删除 Collection 相关属性。

client.drop_collection_properties(
collection_name="my_collection",
property_keys=[
"collection.ttl.seconds"
]
)