跳到主要内容

主键与 AutoID

主键唯一标识一个 Entity。本节将介绍如何添加两种类型的主键及如何开启自动分配主键值。

概述

在 Collection 中,每个 Entity 的主键全局唯一。当您在添加主键字段时,需要显式指定某个 VARCHARINT64 字段为主键字段。如果您选择使用 INT64 类型的主键,主键值应该类似 12345 这样的整数;如果您选择使用 VARCHAR 类型的主键,主键值应该类似于 'my_entity_1234' 这样的字符串。

您还可以通过开启 AutoID 的方式让 Zilliz Cloud 自动为插入的 Entity 分配主键值。当您选择让 Zilliz Cloud 自动为插入的 Entity 分配主键值时,待插入的 Entity 中无须包含主键值。

主键没有默认值,主键值也不能为 Null。

添加 INT64 类型的主键

在添加 INT64 类型的主键时,需要设置 datatypeDataType.INT64,并同时设置 is_primaryTrue。如果您还需要让 Zilliz Cloud 为插入的 Entity 自动分配主键值,还可以将 auto_id 设置为 True

from pymilvus import MilvusClient, DataType

schema = MilvusClient.create_schema()

schema.add_field(
field_name="my_id",
datatype=DataType.INT64,
# highlight-start
is_primary=True,
auto_id=True,
# highlight-end
)

添加 VARCHAR 类型的主键

在添加 VARCHAR 类型的主键时,除了将 data_type 的取值修改为 DataType.VARCHAR 之外,还需要增加设置该字段的最大宽度(max_length)。

schema.add_field(
field_name="my_id",
datatype=DataType.VARCHAR,
# highlight-start
is_primary=True,
auto_id=True,
max_length=512,
# highlight-end
)