ExistsQuery也叫NULL查询或者空值查询。一般用于稀疏数据中,用于判断某一行的某一列是否存在,例如查询所有数据中,address列不为空的行。

说明
  • 如果需要查询某一列为空,则需要和BoolQuery中的mustNotQueries结合使用。
  • 以下情况会认为某一列不存在,以 "city" 列为例说明。
    • city列在本行数据中不存在。
    • city列是空数组,即 "city" = "[]"。

前提条件

  • 已初始化OTSClient,详情请参见初始化
  • 已创建数据表并写入数据。
  • 已在数据表上创建多元索引,详情请参见创建多元索引

参数

参数 说明
fieldName 列名。
query 设置查询类型为ExistsQuery。
tableName 数据表名称。
indexName 多元索引名称。

示例

/**
 * 使用列存在查询,查询表中address列的值不为空的数据。
 * @param client
 */
private static void existQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    ExistsQuery existQuery = new ExistsQuery(); //设置查询类型为ExistsQuery。
    existQuery.setFieldName("address");
    searchQuery.setQuery(existQuery);
    SearchRequest searchRequest = new SearchRequest(TABLE_NAME, INDEX_NAME, searchQuery);

    SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    columnsToGet.setReturnAll(true); //设置为返回所有列。
    searchRequest.setColumnsToGet(columnsToGet);

    SearchResponse resp = client.search(searchRequest);

    System.out.println("TotalCount: " + resp.getTotalCount()); //打印匹配到的总行数,非返回行数。
    System.out.println("Row: " + resp.getRows());
}