Champ primaire et AutoID
Le champ primaire identifie de manière unique une entité. Cette page explique comment ajouter le champ primaire de deux types de données différents et comment permettre à Milvus d'attribuer automatiquement des valeurs de champ primaire.
Vue d'ensemble
Dans une collection, la clé primaire de chaque entité doit être globalement unique. Lors de l'ajout du champ primaire, vous devez explicitement définir son type de données sur VARCHAR ou INT64. En définissant son type de données sur INT64, vous indiquez que les clés primaires doivent être un nombre entier similaire à 12345
; En définissant son type de données sur VARCHAR, vous indiquez que les clés primaires doivent être une chaîne de caractères similaire à my_entity_1234
.
Vous pouvez également activer AutoID pour que Milvus alloue automatiquement des clés primaires aux entités entrantes. Une fois que vous avez activé AutoID dans votre collection, n'incluez pas de clés primaires lors de l'insertion d'entités.
Le champ primaire d'une collection n'a pas de valeur par défaut et ne peut pas être nul.
Utiliser des clés primaires Int64
Pour utiliser des clés primaires de type Int64, vous devez définir datatype
sur DataType.INT64
et is_primary
sur true
. Si vous avez également besoin que Milvus alloue les clés primaires pour les entités entrantes, définissez également auto_id
sur 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
]
}"
Utiliser des clés primaires VarChar
Pour utiliser les clés primaires VarChar, outre la modification de la valeur du paramètre data_type
en DataType.VARCHAR
, vous devez également définir le paramètre max_length
pour le champ.
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
}
}"