跳到主要内容
版本:v2.6.x

修改 Collection

您可以重命名一个 Collection 或更改其设置。本页主要介绍如何修改 Collection。

重新命名 Collection

您可以按以下方式重命名一个 Collection。

from pymilvus import MilvusClient

client = MilvusClient(
uri="http://localhost:19530",
token="root:Milvus"
)

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

设置 Collection 属性

创建 Collection 后,您可以修改 Collection 级属性。

支持的属性

| 属性

|

说明

| | --- | --- | |

collection.ttl.seconds

|

如果需要在特定时间后删除 Collection 的数据,可考虑设置其生存时间(TTL)(以秒为单位)。一旦 TTL 超时,Milvus 就会删除 Collection 中的所有实体。

删除是异步的,这表明在删除完成之前,搜索和查询仍然可以进行。

详情请参阅设置 Collection TTL

| |

mmap.enabled

|

内存映射(Mmap)可实现对磁盘上大型文件的直接内存访问,允许 Milvus 在内存和硬盘中同时存储索引和数据。这种方法有助于根据访问频率优化数据放置策略,在不影响搜索性能的情况下扩大 Collection 的存储容量。

有关详情,请参阅使用 mmap

| |

partitionkey.isolation

|

启用 Partition Key 隔离后,Milvus 会根据 Partition Key 值对实体进行分组,并为每个分组创建单独的索引。收到搜索请求后,Milvus 会根据过滤条件中指定的 Partition Key 值定位索引,并将搜索范围限制在索引包含的实体内,从而避免在搜索过程中扫描不相关的实体,大大提高搜索性能。

有关详情,请参阅使用 Partition Key Isolation

| |

dynamicfield.enabled

|

为创建时未启用动态字段的 Collection 启用动态字段。启用后,就可以插入带有原始 Schema 中未定义字段的实体。有关详情,请参阅动态字段。

| |

allow_insert_auto_id

|

当为 Collection 启用自动 ID 时,是否允许 Collection 接受用户提供的主键值。

  • 设置为**"true "**时:插入、向 upsert 和批量导入时,如果存在用户提供的主键,则使用用户提供的主键;否则,将自动生成主键值。

  • 设置为**"false "时:用户提供的主键值将被拒绝或忽略,主键值始终是自动生成的。默认值为"false"**。

| |

timezone

|

在处理对时间敏感的操作(尤其是TIMESTAMPTZ 字段)时,指定此 Collection 的默认时区。时间戳在内部以 UTC 保存,Milvus 会根据此设置转换值以进行显示和比较。如果设置,Collection 时区将覆盖数据库的默认时区;查询的时区参数可临时覆盖两者。该值必须是有效的IANA 时区标识符(例如,亚洲/上海美国/芝加哥UTC)。有关如何使用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:启用动态字段

以下代码片段演示了如何启用动态字段。

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 在插入、上载和批量导入时接受用户提供的主键值。当设置为**"true "Milvus使用用户提供的主键值(如果存在),否则自动生成。默认值为"假"。**

下面的示例展示了如何启用allow_insert_auto_id

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

例 6:设置 Collection 时区

您可以使用timezone 属性为您的 Collection 设置默认时区。这将决定在 Collection 中的所有操作(包括数据插入、查询和结果展示)中如何解释和显示与时间相关的数据。

timezone 的值必须是有效的IANA 时区标识符,如Asia/ShanghaiAmerica/ChicagoUTC 。使用无效或非标准值将导致在修改 Collection 属性时出错。

下面的示例展示了如何将 Collection 时区设置为亚洲/上海

client.alter_collection_properties(
collection_name="my_collection",
properties={"timezone": "Asia/Shanghai"}
)

删除 Collection 属性

您还可以通过删除 Collection 属性来重置该属性,方法如下。

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