Campo primário e AutoID
O campo primário identifica de forma única uma entidade. Esta página apresenta como adicionar o campo primário de dois tipos de dados diferentes e como permitir que o Milvus atribua automaticamente os valores do campo primário.
Visão geral
Numa coleção, a chave primária de cada entidade deve ser globalmente única. Ao adicionar o campo primário, é necessário definir explicitamente o seu tipo de dados como VARCHAR ou INT64. Definir o seu tipo de dados para INT64 indica que as chaves primárias devem ser um número inteiro semelhante a 12345
; Definir o seu tipo de dados para VARCHAR indica que as chaves primárias devem ser uma cadeia de caracteres semelhante a my_entity_1234
.
Pode também ativar o AutoID para que o Milvus atribua automaticamente chaves primárias às entidades que entram. Uma vez ativado o AutoID na sua coleção, não inclua chaves primárias ao inserir entidades.
O campo primário em uma coleção não tem um valor padrão e não pode ser nulo.
Usar chaves primárias Int64
Para usar chaves primárias do tipo Int64, é necessário definir datatype
para DataType.INT64
e definir is_primary
para true
. Se também precisar que Milvus aloque as chaves primárias para as entidades de entrada, defina também auto_id
para 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
]
}"
Usar chaves primárias VarChar
Para utilizar chaves primárias VarChar, para além de alterar o valor do parâmetro data_type
para DataType.VARCHAR
, é também necessário definir o parâmetro max_length
para o campo.
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
}
}"