!54 !53 支持动态字段插入功能 & MilvusField 支持分区键为true时, 设置集合分区数量

Merge pull request !54 from xgc/main
This commit is contained in:
xgc 2025-09-28 01:18:35 +00:00 committed by Gitee
commit a735b22c9c
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with 23 additions and 1 deletions

View File

@ -75,6 +75,11 @@ public @interface MilvusField {
*/ */
boolean isPartitionKey() default false; boolean isPartitionKey() default false;
/**
* 分区键为true时, 分区数量
*/
int numPartitions() default -1;
/** /**
* 启动分析器 * 启动分析器
*/ */

View File

@ -21,6 +21,7 @@ public class CollectionSchemaBuilder {
private ConsistencyLevel consistencyLevel=ConsistencyLevel.BOUNDED; private ConsistencyLevel consistencyLevel=ConsistencyLevel.BOUNDED;
private Boolean enableDynamicField=false; private Boolean enableDynamicField=false;
private List<CreateCollectionReq.Function> functions; private List<CreateCollectionReq.Function> functions;
private Integer numPartitions;
public CollectionSchemaBuilder(Boolean enableDynamicField,String collectionName, MilvusClientV2 wrapper) { public CollectionSchemaBuilder(Boolean enableDynamicField,String collectionName, MilvusClientV2 wrapper) {
@ -51,6 +52,14 @@ public class CollectionSchemaBuilder {
schema.addFunction(function); schema.addFunction(function);
} }
} }
public void addNumPartitions(Integer numPartitions){
if (numPartitions < 1) {
return;
}
this.numPartitions=numPartitions;
}
public void addConsistencyLevel(ConsistencyLevel level){ public void addConsistencyLevel(ConsistencyLevel level){
this.consistencyLevel=level; this.consistencyLevel=level;
} }
@ -63,7 +72,8 @@ public class CollectionSchemaBuilder {
collectionName(this.collectionName). collectionName(this.collectionName).
collectionSchema(this.schema). collectionSchema(this.schema).
consistencyLevel(this.consistencyLevel). consistencyLevel(this.consistencyLevel).
enableDynamicField(this.enableDynamicField) enableDynamicField(this.enableDynamicField).
numPartitions(this.numPartitions)
.build(); .build();
wrapper.createCollection(req); wrapper.createCollection(req);
} }

View File

@ -106,6 +106,9 @@ public class MilvusConverter {
if (fieldAnnotation.isPrimaryKey()) { if (fieldAnnotation.isPrimaryKey()) {
CollectionToPrimaryCache.collectionToPrimary.put(collectionName, fieldName); CollectionToPrimaryCache.collectionToPrimary.put(collectionName, fieldName);
} }
if (fieldAnnotation.isPartitionKey()) {
milvus.setNumPartitions(fieldAnnotation.numPartitions());
}
// 构建Milvus字段描述 // 构建Milvus字段描述
AddFieldReq.AddFieldReqBuilder<?, ?> builder = AddFieldReq.builder() AddFieldReq.AddFieldReqBuilder<?, ?> builder = AddFieldReq.builder()
.fieldName(fieldName) .fieldName(fieldName)
@ -263,6 +266,7 @@ public class MilvusConverter {
schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0])); schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0]));
schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel()); schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel());
schemaBuilder.addFun(milvusEntity.getFunctions()); schemaBuilder.addFun(milvusEntity.getFunctions());
schemaBuilder.addNumPartitions(milvusEntity.getNumPartitions());
log.info("-------create schema---------"); log.info("-------create schema---------");
schemaBuilder.createSchema(); schemaBuilder.createSchema();
log.info("-------create schema fun---------"); log.info("-------create schema fun---------");

View File

@ -116,6 +116,8 @@ public class LambdaInsertWrapper<T> extends AbstractChainWrapper<T> implements
String tk = propertyCache.functionToPropertyMap.get(key); String tk = propertyCache.functionToPropertyMap.get(key);
if (StringUtils.isNotEmpty(tk)) { if (StringUtils.isNotEmpty(tk)) {
GsonUtil.put(jsonObject,tk,value); GsonUtil.put(jsonObject,tk,value);
} else if (conversionCache.getMilvusEntity().getEnableDynamicField()){
GsonUtil.put(jsonObject,key,value);
} }
} }
if(conversionCache.isAutoID()){ if(conversionCache.isAutoID()){

View File

@ -21,4 +21,5 @@ public class MilvusEntity {
private ConsistencyLevel consistencyLevel; private ConsistencyLevel consistencyLevel;
private Boolean enableDynamicField; private Boolean enableDynamicField;
private List<CreateCollectionReq.Function> functions; private List<CreateCollectionReq.Function> functions;
private Integer numPartitions;
} }