添加enableDynamicField功能

This commit is contained in:
xgc 2024-12-03 08:06:31 +08:00
parent ec82110cb0
commit 272af444ea
2 changed files with 12 additions and 40 deletions

View File

@ -27,6 +27,7 @@ public class CollectionSchemaBuilder {
this.collectionName = collectionName;
this.wrapper = wrapper;
this.schema = wrapper.createSchema();
this.schema.setEnableDynamicField(enableDynamicField);
this.enableDynamicField=enableDynamicField;
}
public CollectionSchemaBuilder(String collectionName, MilvusClientV2 wrapper) {

View File

@ -255,46 +255,17 @@ public class MilvusConverter {
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(
false,milvusEntity.getCollectionName(), client
);
schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0]));
schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel());
schemaBuilder.addFun(milvusEntity.getFunctions());
log.info("-------create schema---------");
schemaBuilder.createSchema();
log.info("-------create schema fun---------");
schemaBuilder.createIndex(indexParams);
log.info("-------create index---------");
}
CollectionSchemaBuilder schemaBuilder = new CollectionSchemaBuilder(
milvusEntity.getEnableDynamicField(),milvusEntity.getCollectionName(), client
);
schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0]));
schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel());
schemaBuilder.addFun(milvusEntity.getFunctions());
log.info("-------create schema---------");
schemaBuilder.createSchema();
log.info("-------create schema fun---------");
schemaBuilder.createIndex(indexParams);
log.info("-------create index---------");
// 创建分区
List<String> partitionName = milvusEntity.getPartitionName();
if (CollectionUtils.isEmpty(partitionName)) {