Skip to content

Commit 0a2b60d

Browse files
authored
optim index interface support db (#1380)
Signed-off-by: lentitude2tk <xushuang.hu@zilliz.com>
1 parent ada0274 commit 0a2b60d

4 files changed

Lines changed: 23 additions & 10 deletions

File tree

pom.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
<organizationUrl>http://www.milvus.io</organizationUrl>
4949
</developer>
5050
</developers>
51+
5152
<modules>
5253
<module>sdk-core</module>
5354
<module>sdk-bulkwriter</module>

sdk-core/src/main/java/io/milvus/v2/service/index/IndexService.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public Void createIndex(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub
8080
Status status = blockingStub.createIndex(builder.build());
8181
rpcUtils.handleResponse(title, status);
8282
if (request.getSync()) {
83-
WaitForIndexComplete(blockingStub, request.getCollectionName(), indexParam.getFieldName(),
83+
WaitForIndexComplete(blockingStub, request.getDatabaseName(), request.getCollectionName(), indexParam.getFieldName(),
8484
indexParam.getIndexName(), request.getTimeout());
8585
}
8686
}
@@ -143,15 +143,17 @@ public Void dropIndexProperties(MilvusServiceGrpc.MilvusServiceBlockingStub bloc
143143
}
144144

145145
public DescribeIndexResp describeIndex(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub, DescribeIndexReq request) {
146-
String title = String.format("DescribeIndexRequest collectionName:%s, fieldName:%s, indexName:%s",
147-
request.getCollectionName(), request.getFieldName(), request.getIndexName());
148-
DescribeIndexRequest describeIndexRequest = DescribeIndexRequest.newBuilder()
146+
String title = String.format("DescribeIndexRequest databaseName:%s collectionName:%s, fieldName:%s, indexName:%s",
147+
request.getDatabaseName(), request.getCollectionName(), request.getFieldName(), request.getIndexName());
148+
DescribeIndexRequest.Builder builder = DescribeIndexRequest.newBuilder()
149149
.setCollectionName(request.getCollectionName())
150150
.setFieldName(request.getFieldName() == null ? "" : request.getFieldName())
151-
.setIndexName(request.getIndexName() == null ? "" : request.getIndexName())
152-
.build();
151+
.setIndexName(request.getIndexName() == null ? "" : request.getIndexName());
152+
if (StringUtils.isNotEmpty(request.getDatabaseName())) {
153+
builder.setDbName(request.getDatabaseName());
154+
}
153155

154-
DescribeIndexResponse response = blockingStub.describeIndex(describeIndexRequest);
156+
DescribeIndexResponse response = blockingStub.describeIndex(builder.build());
155157
rpcUtils.handleResponse(title, response.getStatus());
156158
List<IndexDescription> indexs = response.getIndexDescriptionsList().stream().filter(index -> index.getIndexName().equals(request.getIndexName()) || index.getFieldName().equals(request.getFieldName())).collect(Collectors.toList());
157159
if (indexs.isEmpty()) {
@@ -187,7 +189,7 @@ public List<String> listIndexes(MilvusServiceGrpc.MilvusServiceBlockingStub bloc
187189
}
188190

189191
private void WaitForIndexComplete(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub,
190-
String collectionName, String fieldName, String indexName, long timeoutMs) {
192+
String databaseName, String collectionName, String fieldName, String indexName, long timeoutMs) {
191193
long startTime = System.currentTimeMillis(); // Capture start time/ Timeout in milliseconds (60 seconds)
192194

193195
// alloc a timestamp from the server, the DescribeIndex() will use this timestamp to check the segments
@@ -197,12 +199,16 @@ private void WaitForIndexComplete(MilvusServiceGrpc.MilvusServiceBlockingStub bl
197199
long serverTs = allocTsResp.getTimestamp();
198200

199201
while (true) {
200-
DescribeIndexResp response = describeIndex(blockingStub, DescribeIndexReq.builder()
202+
DescribeIndexReq describeIndexReq = DescribeIndexReq.builder()
201203
.collectionName(collectionName)
202204
.fieldName(fieldName)
203205
.indexName(indexName)
204206
.timestamp(serverTs)
205-
.build());
207+
.build();
208+
if (StringUtils.isNotEmpty(databaseName)) {
209+
describeIndexReq.setDatabaseName(databaseName);
210+
}
211+
DescribeIndexResp response = describeIndex(blockingStub, describeIndexReq);
206212
List<DescribeIndexResp.IndexDesc> indices = response.getIndexDescriptions();
207213
DescribeIndexResp.IndexDesc desc = null;
208214
if (indices.size() == 1) {

sdk-core/src/main/java/io/milvus/v2/service/index/request/DescribeIndexReq.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
@Data
2828
@SuperBuilder
2929
public class DescribeIndexReq {
30+
private String databaseName;
3031
@NonNull
3132
private String collectionName;
3233
private String fieldName;

sdk-core/src/main/java/io/milvus/v2/utils/SchemaUtils.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ private static CreateCollectionReq.FieldSchema convertFromGrpcFieldSchema(FieldS
164164
.isNullable(fieldSchema.getNullable())
165165
.defaultValue(ParamUtils.valueFieldToObject(fieldSchema.getDefaultValue(), fieldSchema.getDataType()))
166166
.build();
167+
168+
Map<String, String> typeParams = new HashMap<>();
167169
for (KeyValuePair keyValuePair : fieldSchema.getTypeParamsList()) {
168170
if(keyValuePair.getKey().equals("dim")){
169171
schema.setDimension(Integer.parseInt(keyValuePair.getValue()));
@@ -179,7 +181,10 @@ private static CreateCollectionReq.FieldSchema convertFromGrpcFieldSchema(FieldS
179181
Map<String, Object> params = JsonUtils.fromJson(keyValuePair.getValue(), new TypeToken<Map<String, Object>>() {}.getType());
180182
schema.setAnalyzerParams(params);
181183
}
184+
// To maintain compatibility with clientV1, the typeParams here will be returned in their original format.
185+
typeParams.put(keyValuePair.getKey(), keyValuePair.getValue());
182186
}
187+
schema.setTypeParams(typeParams);
183188
return schema;
184189
}
185190

0 commit comments

Comments
 (0)