Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@
<organizationUrl>http://www.milvus.io</organizationUrl>
</developer>
</developers>

<modules>
<module>sdk-core</module>
<module>sdk-bulkwriter</module>
Expand Down
26 changes: 16 additions & 10 deletions sdk-core/src/main/java/io/milvus/v2/service/index/IndexService.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ public Void createIndex(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub
Status status = blockingStub.createIndex(builder.build());
rpcUtils.handleResponse(title, status);
if (request.getSync()) {
WaitForIndexComplete(blockingStub, request.getCollectionName(), indexParam.getFieldName(),
WaitForIndexComplete(blockingStub, request.getDatabaseName(), request.getCollectionName(), indexParam.getFieldName(),
indexParam.getIndexName(), request.getTimeout());
}
}
Expand Down Expand Up @@ -143,15 +143,17 @@ public Void dropIndexProperties(MilvusServiceGrpc.MilvusServiceBlockingStub bloc
}

public DescribeIndexResp describeIndex(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub, DescribeIndexReq request) {
String title = String.format("DescribeIndexRequest collectionName:%s, fieldName:%s, indexName:%s",
request.getCollectionName(), request.getFieldName(), request.getIndexName());
DescribeIndexRequest describeIndexRequest = DescribeIndexRequest.newBuilder()
String title = String.format("DescribeIndexRequest databaseName:%s collectionName:%s, fieldName:%s, indexName:%s",
request.getDatabaseName(), request.getCollectionName(), request.getFieldName(), request.getIndexName());
DescribeIndexRequest.Builder builder = DescribeIndexRequest.newBuilder()
.setCollectionName(request.getCollectionName())
.setFieldName(request.getFieldName() == null ? "" : request.getFieldName())
.setIndexName(request.getIndexName() == null ? "" : request.getIndexName())
.build();
.setIndexName(request.getIndexName() == null ? "" : request.getIndexName());
if (StringUtils.isNotEmpty(request.getDatabaseName())) {
builder.setDbName(request.getDatabaseName());
}

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

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

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

while (true) {
DescribeIndexResp response = describeIndex(blockingStub, DescribeIndexReq.builder()
DescribeIndexReq describeIndexReq = DescribeIndexReq.builder()
.collectionName(collectionName)
.fieldName(fieldName)
.indexName(indexName)
.timestamp(serverTs)
.build());
.build();
if (StringUtils.isNotEmpty(databaseName)) {
describeIndexReq.setDatabaseName(databaseName);
}
DescribeIndexResp response = describeIndex(blockingStub, describeIndexReq);
List<DescribeIndexResp.IndexDesc> indices = response.getIndexDescriptions();
DescribeIndexResp.IndexDesc desc = null;
if (indices.size() == 1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
@Data
@SuperBuilder
public class DescribeIndexReq {
private String databaseName;
@NonNull
private String collectionName;
private String fieldName;
Expand Down
5 changes: 5 additions & 0 deletions sdk-core/src/main/java/io/milvus/v2/utils/SchemaUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,8 @@ private static CreateCollectionReq.FieldSchema convertFromGrpcFieldSchema(FieldS
.isNullable(fieldSchema.getNullable())
.defaultValue(ParamUtils.valueFieldToObject(fieldSchema.getDefaultValue(), fieldSchema.getDataType()))
.build();

Map<String, String> typeParams = new HashMap<>();
for (KeyValuePair keyValuePair : fieldSchema.getTypeParamsList()) {
if(keyValuePair.getKey().equals("dim")){
schema.setDimension(Integer.parseInt(keyValuePair.getValue()));
Expand All @@ -179,7 +181,10 @@ private static CreateCollectionReq.FieldSchema convertFromGrpcFieldSchema(FieldS
Map<String, Object> params = JsonUtils.fromJson(keyValuePair.getValue(), new TypeToken<Map<String, Object>>() {}.getType());
schema.setAnalyzerParams(params);
}
// To maintain compatibility with clientV1, the typeParams here will be returned in their original format.
typeParams.put(keyValuePair.getKey(), keyValuePair.getValue());
}
schema.setTypeParams(typeParams);
return schema;
}

Expand Down
Loading