milvus-io / milvus-sdk-java

Java SDK for Milvus.
https://milvus.io
Apache License 2.0
380 stars 153 forks source link

version 2.3.x and 2.4.x do not support .withElementType(DataType.Int32) in the code below. Without this the collection can not be created. #1001

Open sagpid opened 1 month ago

sagpid commented 1 month ago

FieldType tagIdsField = FieldType.newBuilder() .withAutoID(false) .withDataType(DataType.Array) .withDescription("tagIds") .withDimension(0) .withIsDynamic(false) .withMaxLength(0) .withName("tagIds") .withPartitionKey(false) .withPrimaryKey(false) .withTypeParams( typeParams) .withElementType(DataType.Int32) .build();

yhmo commented 1 month ago

withDimension() is for vector field, no need to specify for array field. withIsDynamic() is for dynamic field, no need to specify for array field. withMaxLength() is for varchar field, no need to specify for array field. withPartitionKey() is for partition key field, only varchar/boolean/numeric fields can be partition key, no need to specify for array field. withTypeParams() is a low-level method used by withMaxLength/withMaxCapacity/withDimension, normally no need to call this method.

To declare an array field, withName/withDataType/withMaxCapacity/withElementType must be specified:

FieldType tagIdsField = FieldType.newBuilder()
                .withDataType(DataType.Array)
                .withDescription("tagIds")
                .withName("tagIds")
                .withMaxCapacity(10)
                .withElementType(DataType.Int32)
                .build();