Campo primario y AutoID
El campo primario identifica de forma única a una entidad. Esta página presenta cómo añadir el campo primario de dos tipos de datos diferentes y cómo permitir que Milvus asigne automáticamente valores de campo primario.
Visión general
En una colección, la clave primaria de cada entidad debe ser globalmente única. Al añadir el campo primario, debe establecer explícitamente su tipo de datos como VARCHAR o INT64. Establecer su tipo de datos a INT64 indica que las claves primarias deben ser un entero similar a 12345
; Establecer su tipo de datos a VARCHAR indica que las claves primarias deben ser una cadena similar a my_entity_1234
.
También puede habilitar AutoID para hacer que Milvus asigne automáticamente claves primarias para las entidades entrantes. Una vez que haya habilitado AutoID en su colección, no incluya claves primarias al insertar entidades.
El campo primario en una colección no tiene un valor por defecto y no puede ser nulo.
Utilizar claves primarias Int64
Para utilizar claves primarias de tipo Int64, debe establecer datatype
en DataType.INT64
y is_primary
en true
. Si también necesita que Milvus asigne las claves primarias para las entidades entrantes, establezca auto_id
en 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
]
}"
Utilizar claves primarias VarChar
Para utilizar claves primarias VarChar, además de cambiar el valor del parámetro data_type
a DataType.VARCHAR
, también necesita establecer el parámetro max_length
para el 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
}
}"