queryIterator()
MilvusClient interface. This method returns an iterator for you to iterate over the query results. It is useful especially when the query result contains a large volume of data.
R<QueryIterator> queryIterator(QueryIteratorParam requestParam);
QueryIteratorParam
Use the QueryIteratorParam.Builder
to construct a QueryIteratorParam
object.
import io.milvus.param.dml.QueryIteratorParam;
QueryIteratorParam.Builder builder = QueryIteratorParam.newBuilder();
Methods of QueryIteratorParam.Builder
:
Method | Description | Parameters |
---|---|---|
withCollectionName(collectionName) | Set the collection name. Collection name cannot be empty or null. | collectionName: The target collection name. |
withDatabaseName(String databaseName) | Sets the database name. database name can be null for default database. | databaseName: The database name. |
withConsistencyLevel(ConsistencyLevelEnum consistencyLevel) | Sets the search consistency level(Optional). | consistencyLevel: The consistency level used in the query. |
withPartitionNames(List<String> partitionNames) | Sets partition names list to specify query scope (Optional). | partitionNames: The name list of partitions to be queried. |
addPartitionName(String partitionName) | Adds a partition to specify query scope (Optional). | partitionName: A partition name to be queried. |
withOutFields(List<String> outFields) | Specifies output scalar fields (Optional). |
|
addOutField(String fieldName) | Specifies an output scalar field (Optional). | fieldName: An output field name. |
withExpr(String expr) | Set the expression to query entities. For more information please refer to this doc. | expr: The expression to query |
withOffset(Long offset) | Specify a position, the returned entities before this position will be ignored. Only take effect when the 'limit' value is specified. Default value is 0, start from begin. | offset: A value to define the position. |
withLimit(Long limit) | Specify a value to control the returned number of entities. Must be a positive value. Default value is -1, will return without limit. | limit: A value to define the limit of returned entities. |
withIgnoreGrowing(Boolean ignoreGrowing) | Ignore the growing segments to get best query performance. For the user case that don't require data visibility. Default value is False. | ignoreGrowing: Ignore growing segments or not. |
withBatchSize(Long batchSize) | Specify a value to control the number of entities returned per batch. Must be a positive value. | batchSize: A value to define the number of entities returned per batch |
build() | Construct a QueryIteratorParam object. | N/A |
The QueryIteratorParam.Builder.build()
can throw the following exceptions:
- ParamException: error if the parameter is invalid.
Returns
This method catches all the exceptions and returns an R<QueryIterator>
object.
-
If the API fails on the server side, it returns the error code and message from the server.
-
If the API fails by RPC exception, it returns
R.Status.Unknown
and error message of the exception. -
If the API succeeds, it returns a valid
QueryIterator
held by theR
template.
QueryIterator
Methods of QueryIterator
:
Method | Description | Parameters | Returns |
---|---|---|---|
next() | Return a batch of results. | N/A | List<QueryResultsWrapper.RowRecord> |
close() | Release the cache results. | N/A | N/A |
Example
import io.milvus.param.dml.*;
import io.milvus.orm.iterator.*;
import io.milvus.response.QueryResultsWrapper;
R<QueryIterator> response = milvusClient.queryIterator(QueryIteratorParam.newBuilder()
.withCollectionName(COLLECTION_NAME)
.withExpr(expr)
.withBatchSize(100L)
.build());
if (response.getStatus() != R.Status.Success.getCode()) {
System.out.println(response.getMessage());
}
QueryIterator queryIterator = response.getData();
while (true) {
List<QueryResultsWrapper.RowRecord> batchResults = queryIterator.next();
if (res.isEmpty()) {
System.out.println("query iteration finished, close");
queryIterator.close();
break;
}
for (QueryResultsWrapper.RowRecord res : batchResults) {
System.out.println(res);
}
}