query()
The MilvusClient interface. This method queries entity(s) based on scalar field(s) filtered by boolean expression. Note that the order of the returned entities cannot be guaranteed.
R<QueryResults> query(QueryParam requestParam);
QueryParam
Use the QueryParam.Builder
to construct a QueryParam
object.
import io.milvus.param.dml.QueryParam;
QueryParam.Builder builder = QueryParam.newBuilder();
Methods of QueryParam.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. |
build() |
Construct a QueryParam object. |
N/A |
The QueryParam.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<QueryResults>
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 the error message of the exception.If the API succeeds, it returns valid
QueryResults
held by theR
template. You can useQueryResultsWrapper
to get the query results.
QueryResultsWrapper
A tool class to encapsulate the QueryResults
.
import io.milvus.response.QueryResultsWrapper;
QueryResultsWrapper wrapper = new QueryResultsWrapper(queryResults);
Methods of QueryResultsWrapper
:
Method |
Description |
Parameters |
Returns |
---|---|---|---|
getFieldWrapper(String fieldName) |
Return a FieldDataWrapper object by a field name. Throws |
fieldName: A field name which is specified by the withOutFields() of QueryParam. |
FieldDataWrapper |
getRowCount() |
Gets the row count of a query result. |
N/A |
long |
getRowRecords() |
Gets row records list from the query result. |
N/A |
List<QueryResultsWrapper.RowRecord> |
FieldDataWrapper
A tool class to encapsulate column data returned by query()
API.
Methods of FieldDataWrapper
:
Method |
Description |
Returns |
---|---|---|
isVectorField() |
Tell the user if this field is a vector field or a scalar field. |
boolean |
isJsonField() |
Tell the user if this field is a JSON field. |
boolean |
isDynamicField() |
Tell the user if this field is a the dynamic field. |
boolean |
getDim() |
Gets the dimension value if the field is a vector field. Throw IllegalResponseException if the field is not a vector field. |
int |
getRowCount() |
Gets the row count of a field. Throws IllegalResponseException if the field data is illegal. |
long |
getFieldData() |
Returns the field data according to field type. |
|
QueryResultsWrapper.RowRecord
A tool class to hold the data of a single row in key-value format.
Methods of RowRecord
:
Method |
Description |
Returns |
---|---|---|
put(String keyName, Object obj) |
For internal use. Set a key-value pair for the row. |
boolean |
get(String keyName) |
Get a value by a key name. If the key name is a field name, return the value of this field.If the key name is in the dynamic field, return the value from the dynamic field.Throws ParamException if the key name doesn't exist. |
Object |
Example
import io.milvus.param.dml.*;
import io.milvus.response.QueryResultsWrapper;
import io.milvus.response.FieldDataWrapper;
import io.milvus.grpc.QueryResults;
QueryParam param = QueryParam.newBuilder()
.withCollectionName(COLLECTION_NAME)
.withExpr("id in [100, 101]")
.addOutFields("field1")
.withConsistencyLevel(ConsistencyLevelEnum.EVENTUALLY)
.build();
R<QueryResults> response = client.query(param)
if (response.getStatus() != R.Status.Success.getCode()) {
System.out.println(response.getMessage());
}
QueryResultsWrapper wrapper = new QueryResultsWrapper(response.getData());
List<QueryResultsWrapper.RowRecord> records = wrapper.getRowRecords();
for (QueryResultsWrapper.RowRecord record:records) {
System.out.println(record);
}