mirror of
https://gitee.com/dromara/MilvusPlus.git
synced 2025-12-06 17:08:27 +08:00
添加enableDynamicField功能
This commit is contained in:
parent
ec82110cb0
commit
272af444ea
@ -27,6 +27,7 @@ public class CollectionSchemaBuilder {
|
|||||||
this.collectionName = collectionName;
|
this.collectionName = collectionName;
|
||||||
this.wrapper = wrapper;
|
this.wrapper = wrapper;
|
||||||
this.schema = wrapper.createSchema();
|
this.schema = wrapper.createSchema();
|
||||||
|
this.schema.setEnableDynamicField(enableDynamicField);
|
||||||
this.enableDynamicField=enableDynamicField;
|
this.enableDynamicField=enableDynamicField;
|
||||||
}
|
}
|
||||||
public CollectionSchemaBuilder(String collectionName, MilvusClientV2 wrapper) {
|
public CollectionSchemaBuilder(String collectionName, MilvusClientV2 wrapper) {
|
||||||
|
|||||||
@ -255,46 +255,17 @@ 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()){
|
CollectionSchemaBuilder schemaBuilder = new CollectionSchemaBuilder(
|
||||||
List<AddFieldReq> milvusFields = milvusEntity.getMilvusFields();
|
milvusEntity.getEnableDynamicField(),milvusEntity.getCollectionName(), client
|
||||||
AddFieldReq primaryKeyField = milvusFields.stream()
|
);
|
||||||
.filter(v -> v.getIsPrimaryKey()!=null&&v.getIsPrimaryKey())
|
schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0]));
|
||||||
.findFirst()
|
schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel());
|
||||||
.orElseThrow(() -> new NoSuchElementException("No primary key field found"));
|
schemaBuilder.addFun(milvusEntity.getFunctions());
|
||||||
AddFieldReq vectorField = milvusFields.stream()
|
log.info("-------create schema---------");
|
||||||
.filter(v->v.getDimension()!=null&&v.getDimension()>0)
|
schemaBuilder.createSchema();
|
||||||
.findFirst()
|
log.info("-------create schema fun---------");
|
||||||
.orElseThrow(() -> new NoSuchElementException("No vector field found"));
|
schemaBuilder.createIndex(indexParams);
|
||||||
IndexParam vectorIndexParams = indexParams.stream().filter(v -> Objects.equals(v.getFieldName(), vectorField.getFieldName()))
|
log.info("-------create index---------");
|
||||||
.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---------");
|
|
||||||
}
|
|
||||||
// 创建分区
|
// 创建分区
|
||||||
List<String> partitionName = milvusEntity.getPartitionName();
|
List<String> partitionName = milvusEntity.getPartitionName();
|
||||||
if (CollectionUtils.isEmpty(partitionName)) {
|
if (CollectionUtils.isEmpty(partitionName)) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user