From 272af444eaaf839c0d2cee3ccecc0aa2a364c282 Mon Sep 17 00:00:00 2001 From: xgc Date: Tue, 3 Dec 2024 08:06:31 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0enableDynamicField=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plus/builder/CollectionSchemaBuilder.java | 1 + .../plus/converter/MilvusConverter.java | 51 ++++--------------- 2 files changed, 12 insertions(+), 40 deletions(-) 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 59d7854..1696ce9 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 @@ -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) { 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 a5fe05d..c1daf04 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 @@ -255,46 +255,17 @@ public class MilvusConverter { throw new IllegalArgumentException("the index does not exist, please define the index"); } // 创建新集合 - if(milvusEntity.getEnableDynamicField()){ - List 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 partitionName = milvusEntity.getPartitionName(); if (CollectionUtils.isEmpty(partitionName)) {