diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/annotation/MilvusField.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/annotation/MilvusField.java index 81fb3cd..773c8f0 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/annotation/MilvusField.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/annotation/MilvusField.java @@ -75,6 +75,11 @@ public @interface MilvusField { */ boolean isPartitionKey() default false; + /** + * 分区键为true时, 分区数量 + */ + int numPartitions() default -1; + /** * 启动分析器 */ diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/builder/CollectionSchemaBuilder.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/builder/CollectionSchemaBuilder.java index 1696ce9..03d8403 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/builder/CollectionSchemaBuilder.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/builder/CollectionSchemaBuilder.java @@ -21,6 +21,7 @@ public class CollectionSchemaBuilder { private ConsistencyLevel consistencyLevel=ConsistencyLevel.BOUNDED; private Boolean enableDynamicField=false; private List functions; + private Integer numPartitions; public CollectionSchemaBuilder(Boolean enableDynamicField,String collectionName, MilvusClientV2 wrapper) { @@ -51,6 +52,14 @@ public class CollectionSchemaBuilder { schema.addFunction(function); } } + + public void addNumPartitions(Integer numPartitions){ + if (numPartitions < 1) { + return; + } + this.numPartitions=numPartitions; + } + public void addConsistencyLevel(ConsistencyLevel level){ this.consistencyLevel=level; } @@ -63,7 +72,8 @@ public class CollectionSchemaBuilder { collectionName(this.collectionName). collectionSchema(this.schema). consistencyLevel(this.consistencyLevel). - enableDynamicField(this.enableDynamicField) + enableDynamicField(this.enableDynamicField). + numPartitions(this.numPartitions) .build(); wrapper.createCollection(req); } diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java index 549dc97..f1df017 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/converter/MilvusConverter.java @@ -106,6 +106,9 @@ public class MilvusConverter { if (fieldAnnotation.isPrimaryKey()) { CollectionToPrimaryCache.collectionToPrimary.put(collectionName, fieldName); } + if (fieldAnnotation.isPartitionKey()) { + milvus.setNumPartitions(fieldAnnotation.numPartitions()); + } // 构建Milvus字段描述 AddFieldReq.AddFieldReqBuilder builder = AddFieldReq.builder() .fieldName(fieldName) @@ -263,6 +266,7 @@ public class MilvusConverter { schemaBuilder.addField(milvusEntity.getMilvusFields().toArray(new AddFieldReq[0])); schemaBuilder.addConsistencyLevel(milvusEntity.getConsistencyLevel()); schemaBuilder.addFun(milvusEntity.getFunctions()); + schemaBuilder.addNumPartitions(milvusEntity.getNumPartitions()); log.info("-------create schema---------"); schemaBuilder.createSchema(); log.info("-------create schema fun---------"); diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaInsertWrapper.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaInsertWrapper.java index 1fcc2c5..86504c3 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaInsertWrapper.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/core/conditions/LambdaInsertWrapper.java @@ -116,6 +116,8 @@ public class LambdaInsertWrapper extends AbstractChainWrapper implements String tk = propertyCache.functionToPropertyMap.get(key); if (StringUtils.isNotEmpty(tk)) { GsonUtil.put(jsonObject,tk,value); + } else if (conversionCache.getMilvusEntity().getEnableDynamicField()){ + GsonUtil.put(jsonObject,key,value); } } if(conversionCache.isAutoID()){ diff --git a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/model/MilvusEntity.java b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/model/MilvusEntity.java index e5cbe7f..acd75fc 100644 --- a/milvus-plus-core/src/main/java/org/dromara/milvus/plus/model/MilvusEntity.java +++ b/milvus-plus-core/src/main/java/org/dromara/milvus/plus/model/MilvusEntity.java @@ -21,4 +21,5 @@ public class MilvusEntity { private ConsistencyLevel consistencyLevel; private Boolean enableDynamicField; private List functions; + private Integer numPartitions; }