milvus-io/milvus-sdk-java

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.

Opened this issue · 1 comments

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

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();