@@ -220,7 +220,9 @@ public UpsertResp upsert(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStu
220
220
}
221
221
222
222
public QueryResp query (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub , QueryReq request ) {
223
- String title = String .format ("QueryRequest collectionName:%s, databaseName:%s" , request .getCollectionName (), request .getDatabaseName ());
223
+ String dbName = request .getDatabaseName ();
224
+ String collectionName = request .getCollectionName ();
225
+ String title = String .format ("QueryRequest collectionName:%s, databaseName:%s" , collectionName , dbName );
224
226
if (request .getFilter () == null && request .getIds () == null ) {
225
227
throw new MilvusClientException (ErrorCode .INVALID_PARAMS , "filter and ids can't be null at the same time" );
226
228
} else if (request .getFilter () != null && request .getIds () != null ) {
@@ -229,9 +231,19 @@ public QueryResp query(MilvusServiceGrpc.MilvusServiceBlockingStub blockingStub,
229
231
230
232
231
233
if (request .getIds () != null && request .getFilter () == null ) {
232
- DescribeCollectionReq descReq = DescribeCollectionReq .builder ().databaseName (request .getDatabaseName ()).collectionName (request .getCollectionName ()).build ();
233
- DescribeCollectionResp descResp = collectionService .describeCollection (blockingStub , descReq );
234
- request .setFilter (vectorUtils .getExprById (descResp .getPrimaryFieldName (), request .getIds ()));
234
+ DescribeCollectionResponse descResp = getCollectionInfo (blockingStub , dbName , collectionName , false );
235
+ String primaryKeyName = "" ;
236
+ List <FieldSchema > fields = descResp .getSchema ().getFieldsList ();
237
+ for (FieldSchema field : fields ) {
238
+ if (field .getIsPrimaryKey ()) {
239
+ primaryKeyName = field .getName ();
240
+ break ;
241
+ }
242
+ }
243
+ if (StringUtils .isEmpty (primaryKeyName )) {
244
+ throw new MilvusClientException (ErrorCode .SERVER_ERROR , "cannot find the primary key field in collection schema" );
245
+ }
246
+ request .setFilter (vectorUtils .getExprById (primaryKeyName , request .getIds ()));
235
247
}
236
248
237
249
// reset the db name so that the timestamp cache can set correct key for this collection
@@ -287,15 +299,17 @@ public SearchResp hybridSearch(MilvusServiceGrpc.MilvusServiceBlockingStub block
287
299
288
300
public QueryIterator queryIterator (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub ,
289
301
QueryIteratorReq request ) {
290
- DescribeCollectionResponse descResp = describeCollection (blockingStub , request .getDatabaseName (), request .getCollectionName ());
302
+ DescribeCollectionResponse descResp = getCollectionInfo (blockingStub , request .getDatabaseName (),
303
+ request .getCollectionName (), false );
291
304
DescribeCollectionResp respR = convertUtils .convertDescCollectionResp (descResp );
292
305
CreateCollectionReq .FieldSchema pkField = respR .getCollectionSchema ().getField (respR .getPrimaryFieldName ());
293
306
return new QueryIterator (request , blockingStub , pkField );
294
307
}
295
308
296
309
public SearchIterator searchIterator (MilvusServiceGrpc .MilvusServiceBlockingStub blockingStub ,
297
310
SearchIteratorReq request ) {
298
- DescribeCollectionResponse descResp = describeCollection (blockingStub , request .getDatabaseName (), request .getCollectionName ());
311
+ DescribeCollectionResponse descResp = getCollectionInfo (blockingStub , request .getDatabaseName (),
312
+ request .getCollectionName (), false );
299
313
DescribeCollectionResp respR = convertUtils .convertDescCollectionResp (descResp );
300
314
CreateCollectionReq .FieldSchema pkField = respR .getCollectionSchema ().getField (respR .getPrimaryFieldName ());
301
315
return new SearchIterator (request , blockingStub , pkField );
0 commit comments