Erstellen einer Kollektion
Dieses Thema beschreibt, wie man eine Kollektion in Milvus erstellt.
Eine Kollektion besteht aus einer oder mehreren Partitionen. Beim Erstellen einer neuen Kollektion erstellt Milvus automatisch eine Standardpartition mit dem Namen _default
.
Im folgenden Beispiel wird eine Kollektion namens book
mit zwei Shards erstellt. Die Kollektion umfasst ein Primärschlüsselfeld namens book_id
, ein skalares Feld vom Typ INT64
namens word_count
und ein zweidimensionales Gleitkomma-Vektorfeld namens book_intro
. In tatsächlichen Anwendungen können die Vektordimensionen höher sein als in diesem Beispiel.
Definition des Kollektionsschemas
Die zu erstellende Kollektion muss ein Primärschlüsselfeld und ein Vektorfeld enthalten. Das Primärschlüsselfeld unterstützt die Datentypen INT64 und VarChar.
Tipp: Die Schemadefinition der Kollektion ähnelt der Definition einer Tabellenstruktur in MYSQL.
Zuerst werden die erforderlichen Parameter vorbereitet, einschließlich Feldschemata, Kollektionsschemata und Kollektionsnamen.
Vor der Definition des Kollektionsschemas muss für jedes Feld in der Kollektion ein Schema erstellt werden. Zur Vereinfachung der Dateninsertion ermöglicht Milvus die Angabe eines Standardwerts für jedes skalare Feld (außer für das Primärschlüsselfeld). Dies bedeutet, dass bei der Dateninsertion ein Feld leer gelassen wird, der beim Erstellen des Feldschemas konfigurierte Standardwert für dieses Feld verwendet wird.
var (
collectionName = "book"
)
schema := &entity.Schema{
CollectionName: collectionName,
Description: "Testbuchsuche",
Fields: []*entity.Field{
{
Name: "book_id",
DataType: entity.FieldTypeInt64,
PrimaryKey: true,
AutoID: false,
},
{
Name: "word_count",
DataType: entity.FieldTypeInt64,
PrimaryKey: false,
AutoID: false,
},
{
Name: "book_intro",
DataType: entity.FieldTypeFloatVector,
TypeParams: map[string]string{
"dim": "2",
},
},
},
EnableDynamicField: true
}
Typ | Parameter | Beschreibung | Optionen |
---|---|---|---|
entity.Schema |
CollectionName |
Name der zu erstellenden Kollektion | Nicht zutreffend |
Beschreibung |
Beschreibung der zu erstellenden Kollektion | Nicht zutreffend | |
AutoID |
Schalter zur Aktivierung oder Deaktivierung der automatischen ID-Zuweisung (Primärschlüssel) | True oder False |
|
Fields |
Schemata der Felder in der zu erstellenden Kollektion. Weitere Informationen finden Sie unter Schema | Nicht zutreffend | |
EnableDynamicField |
Ob dynamisches Schema aktiviert werden soll. Weitere Informationen zum dynamischen Schema finden Sie im Benutzerhandbuch für dynamisches Schema und Kollektionsverwaltung | Nicht zutreffend | |
entity.Field |
Name |
Name des zu erstellenden Feldes | Nicht zutreffend |
PrimaryKey |
Ob dieses Feld ein Primärschlüssel ist. Erforderlich für Primärschlüsselfelder | Nicht zutreffend | |
AutoID |
Ob der Feldwert automatisch inkrementiert wird. Erforderlich für Primärschlüsselfelder | Nicht zutreffend | |
Beschreibung |
Beschreibung des Feldes | Nicht zutreffend | |
DataType |
Datentyp des zu erstellenden Feldes | Für Primärschlüsselfelder: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Für skalare Felder: - entity.FieldTypeBool(Boolean) - entity.FieldTypeInt8(numpy.int8) - entity.FieldTypeInt16(numpy.int16) - entity.FieldTypeInt32(numpy.int32) - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeFloat(numpy.float32) - entity.FieldTypeDouble(numpy.double) - entity.FieldTypeVarChar(VARCHAR) Für Vektorfelder: - entity.FieldTypeBinaryVector (Binärer Vektor) - entity.FieldTypeFloatVector (Gleitkomma-Vektor) |
|
TypeParams |
Zuordnung zum String, der Parameter für spezifische Datentypen festlegt | Nicht zutreffend | |
IndexParams |
Zuordnung zum String, der Indexparameter für Kollektionen festlegt | Nicht zutreffend | |
IsDynamic |
Ob dieses Feld ein dynamisches Schema ermöglicht | Nicht zutreffend | |
IsPartitionKey |
Ob dieses Feld als Partitionsschlüssel fungiert | Nicht zutreffend |
Erstellen einer Kollektion basierend auf der definierten Struktur
Anschließend erstellen Sie eine Kollektion unter Verwendung des angegebenen Schemas.
err = milvusClient.CreateCollection(
context.Background(), // ctx
schema,
2, // shardNum
)
if err != nil {
log.Fatal("Fehler beim Erstellen der Kollektion: ", err.Error())
}
Parameter | Beschreibung | Optionen |
---|---|---|
ctx |
Kontext zur Steuerung des API-Aufrufprozesses | Nicht zutreffend |
shardNum |
Anzahl der Shards in der zu erstellenden Kollektion | [1,16] |
Einschränkungen bei der Sammlung
Ressourcenkonfiguration
Merkmal | Maximales Limit |
---|---|
Länge des Sammlungsnamens | 255 Zeichen |
Anzahl der Partitionen in der Sammlung | 4.096 |
Anzahl der Felder in der Sammlung | 64 |
Anzahl der Shards in der Sammlung | 16 |
Parameter default_value
-
default_value
gilt nur für nicht-array- und nicht-JSON-Skalare Felder. -
default_value
gilt nicht für Primärschlüssel. - Der Datentyp von
default_value
muss mit dem imdtype
angegebenen Datentyp übereinstimmen, sonst können Fehler auftreten. - Wenn
auto_id
verwendet wird, ist es nicht erlaubt, alle verbleibenden Felder auf Standardwerte zu setzen. Mit anderen Worten, bei INSERT- oder UPDATE-Operationen muss ein Wert für mindestens ein Feld angegeben werden, sonst können Fehler auftreten.
Überprüfen, ob eine Sammlung existiert
collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
log.Fatal("Fehler beim Überprüfen, ob die Sammlung existiert: ", err.Error())
}
Eine Sammlung löschen
_ = milvusClient.DropCollection(ctx, collectionName)
Alle Sammlungen abfragen
collections, err := milvusClient.ListCollections(ctx)