主要欄位與自動識別
主字段唯一識別一個實體。本頁面介紹如何添加兩種不同數據類型的主字段,以及如何啟用 Milvus 自動分配主字段值。
概述
在一個集合中,每個實體的主鍵應該是全局唯一的。當新增主字段時,你需要明確地設定它的資料類型為VARCHAR或INT64。將其資料類型設定為INT64表示主索引鍵應該是類似12345
的整數;將其資料類型設定為VARCHAR表示主索引鍵應該是類似my_entity_1234
的字串。
你也可以啟用AutoID來使 Milvus 自動為傳入的實體分配主鍵。一旦你在你的集合中啟用了AutoID,在插入實體時不要包含主鍵。
集合中的主欄位沒有預設值,也不能為空。
使用 Int64 主鍵
要使用 Int64 類型的主鍵,您需要設定datatype
為DataType.INT64
,並設定is_primary
為true
。如果您也需要 Milvus 為進入的實體分配主鍵,也請設定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
)
import io.milvus.v2.common.DataType;
import io.milvus.v2.service.collection.request.AddFieldReq;
import io.milvus.v2.service.collection.request.CreateCollectionReq;
CreateCollectionReq.CollectionSchema schema = client.createSchema();
schema.addField(AddFieldReq.builder()
.fieldName("my_id")
.dataType(DataType.Int64)
// highlight-start
.isPrimaryKey(true)
.autoID(true)
// highlight-end
.build());
);
import { DataType } from "@zilliz/milvus2-sdk-node";
const schema = [
{
name: "pk",
description: "ID field",
data_type: DataType.VARCHAR,
is_primary_key: true,
max_length: 100,
},
];
// Go 缺失
export primaryField='{
"fieldName": "my_id",
"dataType": "Int64",
"isPrimary": true
}'
export schema="{
\"autoID\": true,
\"fields\": [
$primaryField
]
}"
使用 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
)
import io.milvus.v2.common.DataType;
import io.milvus.v2.service.collection.request.AddFieldReq;
schema.addField(AddFieldReq.builder()
.fieldName("my_id")
.dataType(DataType.VarChar)
// highlight-start
.isPrimaryKey(true)
.autoID(true)
.maxLength(512)
// highlight-end
.build());
schema.push({
name: "my_id",
data_type: DataType.VarChar,
// highlight-start
is_primary_key: true,
autoID: true,
maxLength: 512
// highlight-end
});
// Go 缺失
export primaryField='{
"fieldName": "my_id",
"dataType": "VarChar",
"isPrimary": true
}'
export schema="{
\"autoID\": true,
\"fields\": [
$primaryField
],
\"params\": {
\"max_length\": 512
}
}"