Creación de una colección
En este tema se describe cómo crear una colección en Milvus.
Una colección consta de una o más particiones. Al crear una nueva colección, Milvus crea automáticamente una partición predeterminada llamada _default
.
El siguiente ejemplo crea una colección llamada book
con dos fragmentos. Incluye un campo de clave principal llamado book_id
, un campo escalar INT64
llamado word_count
y un campo de vector de punto flotante bidimensional llamado book_intro
. Las aplicaciones reales pueden usar dimensiones de vector superiores a las del ejemplo.
Definición del esquema de colección
La colección a crear debe incluir un campo de clave principal y un campo de vector. El campo de clave principal admite los tipos de datos INT64 y VarChar.
Nota: La definición del esquema de la colección es similar a definir una estructura de tabla en MYSQL.
Primero, prepare los parámetros necesarios, incluidos los esquemas de campo, los esquemas de colección y los nombres de colección.
Antes de definir el esquema de colección, cree un esquema para cada campo en la colección. Para simplificar la complejidad de la inserción de datos, Milvus permite especificar un valor predeterminado para cada campo escalar (excepto para el campo de clave principal). Esto significa que si un campo se deja vacío durante la inserción de datos, se utilizará el valor predeterminado configurado para este campo durante la creación del esquema de campo.
var (
collectionName = "book"
)
schema := &entity.Schema{
CollectionName: collectionName,
Description: "Búsqueda de libros de prueba",
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
}
Tipo | Parámetro | Descripción | Opciones |
---|---|---|---|
entity.Schema |
CollectionName |
Nombre de la colección a crear | N/A |
Description |
Descripción de la colección a crear | N/A | |
AutoID |
Interruptor utilizado para habilitar o deshabilitar la asignación automática de ID (clave principal) | Verdadero o Falso |
|
Fields |
Esquemas de los campos en la colección a crear. Para obtener más información, consulte esquema | N/A | |
EnableDynamicField |
Si se habilita un esquema dinámico. Para obtener más información sobre el esquema dinámico, consulte la Guía del usuario de Esquema Dinámico y Gestión de Colecciones | N/A | |
entity.Field |
Name |
Nombre del campo a crear | N/A |
PrimaryKey |
Si este campo es una clave principal. Requerido para campos de clave principal | N/A | |
AutoID |
Si el valor del campo se incrementa automáticamente. Requerido para campos de clave principal | N/A | |
Description |
Descripción del campo | N/A | |
DataType |
Tipo de datos del campo a crear | Para campos de clave principal: - entity.FieldTypeInt64(numpy.int64) - entity.FieldTypeVarChar(VARCHAR) Para campos escalares: - 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) Para campos de vector: - entity.FieldTypeBinaryVector (Vector binario) - entity.FieldTypeFloatVector (Vector de punto flotante) |
|
TypeParams |
Mapeo a la cadena que establece parámetros para tipos de datos específicos | N/A | |
IndexParams |
Mapeo a la cadena que establece parámetros de índice de colección | N/A | |
IsDynamic |
Si este campo habilita un esquema dinámico | N/A | |
IsPartitionKey |
Si este campo actúa como una clave de partición | N/A |
Crear una colección basada en la estructura definida
A continuación, cree una colección utilizando el esquema especificado.
err = milvusClient.CreateCollection(
context.Background(), // ctx
schema,
2, // shardNum
)
if err != nil {
log.Fatal("Error al crear la colección: ", err.Error())
}
Parámetro | Descripción | Opciones |
---|---|---|
ctx |
Contexto para controlar el proceso de llamada a la API | N/A |
shardNum |
Número de fragmentos en la colección a crear | [1,16] |
Restricciones de colección
Configuración de recursos
Característica | Límite máximo |
---|---|
Longitud del nombre de la colección | 255 caracteres |
Número de particiones en la colección | 4,096 |
Número de campos en la colección | 64 |
Número de fragmentos en la colección | 16 |
Parámetro default_value
-
default_value
aplica solo a campos escalares no array y no JSON. -
default_value
no se aplica a claves primarias. - El tipo de datos de
default_value
debe ser el mismo que el tipo de datos especificado endtype
, de lo contrario pueden ocurrir errores. - Si se usa
auto_id
, no se permite establecer todos los campos restantes para usar valores predeterminados. En otras palabras, al realizar operaciones de inserción o actualización, debe especificar un valor para al menos un campo; de lo contrario, pueden ocurrir errores.
Comprobar si una colección existe
collExists, err := milvusClient.HasCollection(ctx, collectionName)
if err != nil {
log.Fatal("Error al comprobar si la colección existe: ", err.Error())
}
Eliminar una colección
_ = milvusClient.DropCollection(ctx, collectionName)
Consultar todas las colecciones
colecciones, err := milvusClient.ListCollections(ctx)