ソースを参照

support batch describe collection (#1578)

Signed-off-by: lentitude2tk <xushuang.hu@zilliz.com>
xushuang.hu 1 ヶ月 前
コミット
635dcacf7b

+ 12 - 2
examples/src/main/java/io/milvus/v2/GeneralExample.java

@@ -27,7 +27,12 @@ import io.milvus.v2.client.MilvusClientV2;
 import io.milvus.v2.common.ConsistencyLevel;
 import io.milvus.v2.common.DataType;
 import io.milvus.v2.common.IndexParam;
-import io.milvus.v2.service.collection.request.*;
+import io.milvus.v2.service.collection.request.AddFieldReq;
+import io.milvus.v2.service.collection.request.CreateCollectionReq;
+import io.milvus.v2.service.collection.request.DescribeCollectionReq;
+import io.milvus.v2.service.collection.request.DropCollectionReq;
+import io.milvus.v2.service.collection.request.LoadCollectionReq;
+import io.milvus.v2.service.collection.request.ReleaseCollectionReq;
 import io.milvus.v2.service.collection.response.DescribeCollectionResp;
 import io.milvus.v2.service.collection.response.ListCollectionsResp;
 import io.milvus.v2.service.partition.request.CreatePartitionReq;
@@ -39,7 +44,12 @@ import io.milvus.v2.service.vector.request.data.FloatVec;
 import io.milvus.v2.service.vector.response.InsertResp;
 import io.milvus.v2.service.vector.response.SearchResp;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
 
 public class GeneralExample {
     private static final MilvusClientV2 client;

+ 11 - 0
sdk-core/src/main/java/io/milvus/v2/client/MilvusClientV2.java

@@ -392,6 +392,17 @@ public class MilvusClientV2 {
     public DescribeCollectionResp describeCollection(DescribeCollectionReq request) {
         return rpcUtils.retry(()-> collectionService.describeCollection(this.getRpcStub(), request));
     }
+
+    /**
+     * Gets the collections info in Milvus.
+     *
+     * @param request describe collections request
+     * @return List<DescribeCollectionResp>
+     */
+    public List<DescribeCollectionResp> batchDescribeCollection(BatchDescribeCollectionReq request) {
+        return rpcUtils.retry(()-> collectionService.batchDescribeCollections(this.getRpcStub(), request));
+    }
+
     /**
      * get collection stats for a collection in Milvus.
      *

+ 13 - 0
sdk-core/src/main/java/io/milvus/v2/service/collection/CollectionService.java

@@ -318,6 +318,19 @@ public class CollectionService extends BaseService {
         return convertUtils.convertDescCollectionResp(response);
     }
 
+    public List<DescribeCollectionResp> batchDescribeCollections(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub, BatchDescribeCollectionReq request) {
+        String title = String.format("BatchDescribeCollectionRequest collectionNames:%s, databaseName:%s", request.getCollectionNames(), request.getDatabaseName());
+        BatchDescribeCollectionRequest.Builder builder = BatchDescribeCollectionRequest.newBuilder()
+                .addAllCollectionName(request.getCollectionNames());
+        if (StringUtils.isNotEmpty(request.getDatabaseName())) {
+            builder.setDbName(request.getDatabaseName());
+        }
+
+        BatchDescribeCollectionResponse response = blockingStub.batchDescribeCollection(builder.build());
+        rpcUtils.handleResponse(title, response.getStatus());
+        return convertUtils.convertDescCollectionsResp(response);
+    }
+
     public Void renameCollection(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub, RenameCollectionReq request) {
         String title = String.format("RenameCollectionRequest collectionName:%s", request.getCollectionName());
         RenameCollectionRequest renameCollectionRequest = RenameCollectionRequest.newBuilder()

+ 32 - 0
sdk-core/src/main/java/io/milvus/v2/service/collection/request/BatchDescribeCollectionReq.java

@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package io.milvus.v2.service.collection.request;
+
+import lombok.Data;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+@Data
+@SuperBuilder
+public class BatchDescribeCollectionReq {
+    private String databaseName;
+    private List<String> collectionNames;
+}

+ 18 - 1
sdk-core/src/main/java/io/milvus/v2/utils/ConvertUtils.java

@@ -21,7 +21,14 @@ package io.milvus.v2.utils;
 
 import com.google.gson.reflect.TypeToken;
 import io.milvus.common.utils.JsonUtils;
-import io.milvus.grpc.*;
+import io.milvus.grpc.BatchDescribeCollectionResponse;
+import io.milvus.grpc.DescribeCollectionResponse;
+import io.milvus.grpc.FieldData;
+import io.milvus.grpc.FieldSchema;
+import io.milvus.grpc.IndexDescription;
+import io.milvus.grpc.KeyValuePair;
+import io.milvus.grpc.QueryResults;
+import io.milvus.grpc.SearchResults;
 import io.milvus.param.Constant;
 import io.milvus.param.ParamUtils;
 import io.milvus.response.QueryResultsWrapper;
@@ -140,6 +147,16 @@ public class ConvertUtils {
         return DescribeIndexResp.builder().indexDescriptions(descs).build();
     }
 
+    public List<DescribeCollectionResp> convertDescCollectionsResp(BatchDescribeCollectionResponse response) {
+        List<DescribeCollectionResp> result = new ArrayList<>();
+        List<DescribeCollectionResponse> responsesList = response.getResponsesList();
+        for (DescribeCollectionResponse collectionResponse : responsesList) {
+            DescribeCollectionResp describeCollectionResp = convertDescCollectionResp(collectionResponse);
+            result.add(describeCollectionResp);
+        }
+        return result;
+    }
+
     public DescribeCollectionResp convertDescCollectionResp(DescribeCollectionResponse response) {
         Map<String, String> properties = new HashMap<>();
         response.getPropertiesList().forEach(prop->properties.put(prop.getKey(), prop.getValue()));