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);
}
}