Первичное поле и автоидентификатор
Первичное поле уникально идентифицирует сущность. На этой странице описано, как добавить первичное поле в два разных типа данных и как включить в Milvus функцию автоматического присвоения значений первичного поля.
Обзор
В коллекции первичный ключ каждой сущности должен быть глобально уникальным. При добавлении первичного поля необходимо явно установить тип данных VARCHAR или INT64. Установка типа данных INT64 означает, что первичными ключами должны быть целые числа, как на 12345
; установка типа данных VARCHAR означает, что первичными ключами должны быть строки, как на my_entity_1234
.
Вы также можете включить AutoID, чтобы Milvus автоматически выделял первичные ключи для входящих сущностей. После включения AutoID в коллекции не включайте первичные ключи при вставке сущностей.
Первичное поле в коллекции не имеет значения по умолчанию и не может быть null.
Использование первичных ключей 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
}
}"