プライマリフィールドとAutoID
プライマリフィールドはエンティティを一意に識別します。このページでは、2つの異なるデータ型のプライマリフィールドを追加する方法と、Zilliz Cloudを有効にしてプライマリフィールドの値を自動的に割り当てる方法を紹介します。
概要について
コレクションでは、各エンティティの主キーはグローバルに一意である必要があります。主フィールドを追加する場合は、明示的にデータ型をVARCHARまたはINT64に設定する必要があります。データ型をINT64に設定すると、主キーは12345
に似た整数である必要があります。データ型をVARCHARに設定すると、主キーはmy_entity_1234
に似た文字列である必要があります。
また、AutoIDを有効にして、Zilliz Cloudが受信するエンティティのプライマリキーを自動的に割り当てるようにすることもできます。コレクションでAutoIDを有効にしたら、エンティティを挿入する際にプライマリキーを含めないようにしてください。
コレクション内のプライマリフィールドにはデフォルト値がなく、nullにすることはできません。
Int 64プライマリキーを使用
Int 64型のプライマリキーを使用するには、datatype
をDataType.INT64
に設定し、is_primary
をtrue
に設定する必要があります。受信するエンティティのプライマリキーを割り当てるためにZilliz Cloudも必要な場合は、auto_id
をtrue
に設定してください。
- Python
- Java
- NodeJS
- Go
- cURL
from pymilvus import MilvusClient, DataType
schema = MilvusClient.create_schema()
schema.add_field(
field_name="my_id",
datatype=DataType.INT64,
is_primary=True,
auto_id=True,
)
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)
.isPrimaryKey(true)
.autoID(true)
.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プライマリキーを使用するには、datatype
パラメータの値をDataType.VARCHAR
に変更するだけでなく、フィールドのmax_length
パラメータも設定する必要があります。
- Python
- Java
- NodeJS
- Go
- cURL
schema.add_field(
field_name="my_id",
datatype=DataType.VARCHAR,
is_primary=True,
auto_id=True,
max_length=512,
)
import io.milvus.v2.common.DataType;
import io.milvus.v2.service.collection.request.AddFieldReq;
schema.addField(AddFieldReq.builder()
.fieldName("my_id")
.dataType(DataType.VarChar)
.isPrimaryKey(true)
.autoID(true)
.maxLength(512)
.build());
schema.push({
name: "my_id",
data_type: DataType.VarChar,
is_primary_key: true,
autoID: true,
maxLength: 512
});
// Go
export primaryField='{
"fieldName": "my_id",
"dataType": "VarChar",
"isPrimary": true
}'
export schema="{
\"autoID\": true,
\"fields\": [
$primaryField
],
\"params\": {
\"max_length\": 512
}
}"