添加enableDynamicField功能

This commit is contained in:
xgc 2024-12-02 23:09:53 +08:00
parent 47def3cc9c
commit ec82110cb0

View File

@ -255,8 +255,36 @@ public class MilvusConverter {
throw new IllegalArgumentException("the index does not exist, please define the index"); throw new IllegalArgumentException("the index does not exist, please define the index");
} }
// 创建新集合 // 创建新集合
if(milvusEntity.getEnableDynamicField()){
List<AddFieldReq> milvusFields = milvusEntity.getMilvusFields();
AddFieldReq primaryKeyField = milvusFields.stream()
.filter(v -> v.getIsPrimaryKey()!=null&&v.getIsPrimaryKey())
.findFirst()
.orElseThrow(() -> new NoSuchElementException("No primary key field found"));
AddFieldReq vectorField = milvusFields.stream()
.filter(v->v.getDimension()!=null&&v.getDimension()>0)
.findFirst()
.orElseThrow(() -> new NoSuchElementException("No vector field found"));
IndexParam vectorIndexParams = indexParams.stream().filter(v -> Objects.equals(v.getFieldName(), vectorField.getFieldName()))
.findFirst()
.orElseThrow(() -> new NoSuchElementException("No vector index params found"));
CreateCollectionReq.CreateCollectionReqBuilder<?, ?> builder = CreateCollectionReq.builder();
builder.enableDynamicField(milvusEntity.getEnableDynamicField()).
collectionName(milvusEntity.getCollectionName()).
idType(primaryKeyField.getDataType()).
primaryFieldName(primaryKeyField.getFieldName()).
maxLength(primaryKeyField.getMaxLength()).
autoID(primaryKeyField.getAutoID()).
vectorFieldName(vectorField.getFieldName()).
dimension(vectorField.getDimension()).
metricType(vectorIndexParams.getMetricType().name()).
consistencyLevel(milvusEntity.getConsistencyLevel());
CreateCollectionReq build = builder.build();
client.createCollection(build);
}else {
CollectionSchemaBuilder schemaBuilder = new CollectionSchemaBuilder( CollectionSchemaBuilder schemaBuilder = new CollectionSchemaBuilder(
milvusEntity.getEnableDynamicField(),milvusEntity.getCollectionName(), client false,milvusEntity.getCollectionName(), client
); );
schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0])); schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0]));
schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel()); schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel());
@ -266,6 +294,7 @@ public class MilvusConverter {
log.info("-------create schema fun---------"); log.info("-------create schema fun---------");
schemaBuilder.createIndex(indexParams); schemaBuilder.createIndex(indexParams);
log.info("-------create index---------"); log.info("-------create index---------");
}
// 创建分区 // 创建分区
List<String> partitionName = milvusEntity.getPartitionName(); List<String> partitionName = milvusEntity.getPartitionName();
if (CollectionUtils.isEmpty(partitionName)) { if (CollectionUtils.isEmpty(partitionName)) {