From 5959b6836d47241ed4a98c212f9fd6f51e148309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=91=E5=8B=87?= Date: Thu, 25 Sep 2025 20:33:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(create=20scheme):=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E5=88=86=E5=8C=BA=E9=94=AE=E4=B8=BAtrue=E6=97=B6,=20=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=9B=86=E5=90=88=E5=88=86=E5=8C=BA=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在`CollectionSchemaBuilder`中添加`numPartitions`字段及设置方法 - 更新创建集合时的构建逻辑以包含分区数量配置 - 在`MilvusConverter`中根据注解自动设置分区数量 - 扩展`MilvusField`注解支持`numPartitions`属性 - 在`MilvusEntity`中增加`numPartitions`字段用于存储分区配置 --- .../dromara/milvus/plus/annotation/MilvusField.java | 5 +++++ .../milvus/plus/builder/CollectionSchemaBuilder.java | 12 +++++++++++- .../milvus/plus/converter/MilvusConverter.java | 4 ++++ .../org/dromara/milvus/plus/model/MilvusEntity.java | 1 + 4 files changed, 21 insertions(+), 1 deletion(-) 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/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; } From b4dac2083b4822ef04a26fda7156de4fdb989a92 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 27 Sep 2025 20:58:55 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix(LambdaInsertWrapper):=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=8A=A8=E6=80=81=E5=AD=97=E6=AE=B5=E6=8F=92=E5=85=A5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../milvus/plus/core/conditions/LambdaInsertWrapper.java | 2 ++ 1 file changed, 2 insertions(+) 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()){