Primärfeld & AutoID
Das Primärfeld dient der eindeutigen Identifizierung einer Entität. Auf dieser Seite erfahren Sie, wie Sie das Primärfeld von zwei verschiedenen Datentypen hinzufügen können und wie Sie Milvus in die Lage versetzen, Primärfeldwerte automatisch zuzuordnen.
Übersicht
In einer Sammlung sollte der Primärschlüssel jeder Entität global eindeutig sein. Wenn Sie das Primärfeld hinzufügen, müssen Sie seinen Datentyp explizit auf VARCHAR oder INT64 einstellen. Die Einstellung des Datentyps auf INT64 bedeutet, dass die Primärschlüssel eine ganze Zahl ähnlich wie 12345 sein sollten; die Einstellung des Datentyps auf VARCHAR bedeutet, dass die Primärschlüssel eine Zeichenkette ähnlich wie my_entity_1234 sein sollten.
Sie können auch AutoID aktivieren, damit Milvus automatisch Primärschlüssel für eingehende Entitäten zuweist. Sobald Sie AutoID in Ihrer Sammlung aktiviert haben, sollten Sie beim Einfügen von Entitäten keine Primärschlüssel verwenden.
Das Primärfeld in einer Sammlung hat keinen Standardwert und kann nicht null sein.
Int64-Primärschlüssel verwenden
Um Primärschlüssel vom Typ Int64 zu verwenden, müssen Sie datatype auf DataType.INT64 und is_primary auf true setzen. Wenn Milvus auch die Primärschlüssel für die eingehenden Entitäten zuweisen soll, setzen Sie auto_id auf 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.INT64,
is_primary_key: true,
max_length: 100,
},
];
import "github.com/milvus-io/milvus/client/v2/entity"
schema := entity.NewSchema()
schema.WithField(entity.NewField().WithName("my_id").
WithDataType(entity.FieldTypeInt64).
WithIsPrimaryKey(true).
WithIsAutoID(true),
)
export primaryField='{
"fieldName": "my_id",
"dataType": "Int64",
"isPrimary": true
}'
export schema="{
\"autoID\": true,
\"fields\": [
$primaryField
]
}"
Verwendung von VarChar-Primärschlüsseln
Um VarChar-Primärschlüssel zu verwenden, müssen Sie nicht nur den Wert des Parameters data_type auf DataType.VARCHAR ändern, sondern auch den Parameter max_length für das Feld festlegen.
schema.add_field(
field_name="my_id",
datatype=DataType.VARCHAR,
# highlight-start
is_primary=True,
auto_id=True,
max_length=512,
# highlight-end
)
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
});
schema := entity.NewSchema()
schema.WithField(entity.NewField().WithName("my_id").
WithDataType(entity.FieldTypeVarChar).
// highlight-start
WithIsPrimaryKey(true).
WithIsAutoID(true).
WithMaxLength(512),
// highlight-end
)
export primaryField='{
"fieldName": "my_id",
"dataType": "VarChar",
"isPrimary": true
}'
export schema="{
\"autoID\": true,
\"fields\": [
$primaryField
],
\"params\": {
\"max_length\": 512
}
}"