milvus-logo
LFAI
< Docs
  • Java

createCollection()

A MilvusClient interface. This method creates a collection with the specified schema.

R<RpcStatus> createCollection(CreateCollectionParam requestParam);

CreateCollectionParam

Use the CreateCollectionParam.Builder to construct a CreateCollectionParam object.

import io.milvus.param.CreateCollectionParam;
CreateCollectionParam.Builder builder = CreateCollectionParam.newBuilder();

Methods of CreateCollectionParam.Builder:

Method Description Parameters
withCollectionName(String collectionName) Sets the collection name. Collection name cannot be empty or null. collectionName: The name of the collection to create.
withShardsNum(int shardsNum) Sets the shards number. The number must be greater or equal to zero.
The default value is 0, which means letting the server decide the value. The server set this value to 1 if user didn't specify it.
shardsNum: The number of shards to split the inserted data into. Multiple shards are processed by multiple nodes in Milvus.
withDescription(String description) Sets the collection description. The description can be empty. The default description is "". description: The description of the collection to create.
withFieldTypes(List\ fieldTypes) Sets the collection schema. The collection schema cannot be empty. fieldTypes: a list of FieldType objects, each representing a field schema.
addFieldType(FieldType fieldType) Adds a field schema. fieldType: The schema of a field to add in the collection.
withConsistencyLevel(ConsistencyLevelEnum consistencyLevel) Sets the consistency level. The default value is ConsistencyLevelEnum.BOUNDED consistencyLevel: the consistency level of this collection
withPartitionsNum(int partitionsNum) Sets the partitions number if there is partition key field. The number must be greater than zero.
The default value is 64(defined in server side). The upper limit is 4096(defined in server side).
Not allow to set this value if none of field is partition key. Only one partition key field is allowed in a collection.
partitionsNum: Defines the number of partition if there is a partition key field in the collection.
build() Constructs a CreateCollectionParam object N/A

The CreateCollectionParam.Builder.build() can throw the following exceptions:

  • ParamException: error if the parameter is invalid.

FieldType

A tool class to represent a field's schema. Use FieldType.Builder to build a FieldType object.

import io.milvus.param.FieldType;
FieldType.Builder builder = FieldType.newBuilder();
FieldType ft = builder.build()

Methods of FieldType.Builder:

Method Description Parameters
withName(String name) Sets the name of the field. The name cannot be empty or null. name: The name of the field.
withPrimaryKey(boolean primaryKey)
Sets the field as the primary key field. Only fields whose data type is INT64 or VARCHAR can be set as the primary key field. The value is false by default.
primaryKey: A boolean value that defines if the field is the primary key field. The value true means that the field is the primary key field while the value false means it is not.
withDescription(String description) Sets the field description. The description can be empty. The default value is an empty string. description: The description of the field.
withDataType(DataType dataType) Sets the data type for the field. Please refer to DataType in Misc. dataType: The data type of the field.
withElementType(DataType elementType) Sets the element type for Array type field.
Valid element types for Array: Int8, Int16, Int32, Int64, Varchar, Bool, Float, Double
elementType: element type of the array.
addTypeParam(String key, String value)
Adds a parameter pair for the field. This is mainly used to set extra parameters for the vector field and varchar field. key: The parameter key.
value: The parameter value.
withDimension(Integer dimension) Sets the dimension of a vector field. The dimension value must be greater than zero. This method internally calls addTypeParam() to store the dimension value. dimension: The dimension of the vector field.
withMaxLength(Integer maxLength) Sets the maximum length of a Varchar field. The value must be greater than zero. This method internally calls the addTypeParam() to store the maximum length value. maxLength: The maximum length of the varchar field.
withMaxCapacity(Integer maxCapacity) Sets the max capacity of an Array field.
The valid capacity value range is [1, 4096]
maxCapacity: The max capacity of the array.
withAutoID(boolean autoID)
Enables auto-ID function for the field. Note that the auto-ID function can only be enabled on primary key field.
If auto-ID function is enabled, Milvus automatically generates a unique ID for each entity so that values for the primary key field do not need to be provided during data insertion. If auto-ID is disabled, values for the primary key field need to be provided during data insertion.
autoID: A boolean value that defines if the primary keys are automatically generated. The value true means that auto-ID is enabled, while the value false means it is not.
withPartitionKey(boolean partitionKey)
Sets the field to be partition key.
A partition key field's values are hashed and distributed to different logic partitions.
Only int64 and varchar type fields can be a partition key. The primary key field can not be a partition key.
partitionKey: A boolean value that defines if this field is a partition key field. The value true is a partition key, false is not.
build() Create a FieldType object. N/A

Returns

This method catches all the exceptions and returns an R<RpcStatus> object.

  • If the API fails on the server side, it returns the error code and message from the server.

  • If the API fails by RPC exception, it returns R.Status.Unknown and the error message of the exception.

  • If the API succeeds, it returns R.Status.Success.

Example

import io.milvus.param.*;

List<FieldType> fieldsSchema = new ArrayList<>();
FieldType field_1 = FieldType.newBuilder()
        .withPrimaryKey(true)
        .withAutoID(false)
        .withDataType(DataType.Int64)
        .withName("uid")
        .withDescription("unique id")
        .build();

fieldsSchema.add(field_1);

FieldType field_2 = FieldType.newBuilder()
        .withDataType(DataType.FloatVector)
        .withName("embedding")
        .withDescription("embeddings")
        .withDimension(dimension)
        .build();
fieldsSchema.add(field_2);

// create collection
CreateCollectionParam param = CreateCollectionParam.newBuilder()
        .withCollectionName(COLLECTION_NAME)
        .withDescription("a collection for search")
        .withFieldTypes(fieldsSchema)
        .build();

R<RpcStatus> response = client.createCollection(param);
if (response.getStatus() != R.Status.Success.getCode()) {
    System.out.println(response.getMessage());
}