RangeQuery根据范围条件查询表中的数据。对于Text类型字段,只要分词后的词条中有词条满足范围条件即可。

接口

范围查询的接口为Search或者ParallelScan,具体的Query类型为RangeQuery。

使用

您可以使用如下语言的SDK实现范围查询。

参数

参数 说明
fieldName 要匹配的字段。
from 起始位置的值。

设置范围条件时,大于(>)可以使用greaterThan表示,大于等于(>=)可以使用greaterThanOrEqual表示。

to 结束位置的值。

设置范围条件时,小于(<)可以使用lessThan表示;小于等于(<=)可以使用lessThanOrEqual表示。

includeLower 结果中是否需要包括from值,类型为Boolean。
includeUpper 结果中是否需要包括to值,类型为Boolean。
query 设置查询类型为RangeQuery。
sort 按照指定方式排序,详情请参见排序
tableName 数据表名称。
indexName 多元索引名称。

示例

/**
 * 查询表中Col_Long列大于3的数据,结果按照Col_Long列的值逆序排序。
 * @param client
 */
private static void rangeQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    RangeQuery rangeQuery = new RangeQuery(); //设置查询类型为RangeQuery。
    rangeQuery.setFieldName("Col_Long");  //设置要匹配的字段。
    rangeQuery.greaterThan(ColumnValue.fromLong(3));  //设置该字段的范围条件为大于3。
    searchQuery.setGetTotalCount(true);
    searchQuery.setQuery(rangeQuery);

    //设置按照Col_Long列逆序排序。
    FieldSort fieldSort = new FieldSort("Col_Long");
    fieldSort.setOrder(SortOrder.DESC);
    searchQuery.setSort(new Sort(Arrays.asList((Sort.Sorter)fieldSort)));

    SearchRequest searchRequest = new SearchRequest(TABLE_NAME, INDEX_NAME, searchQuery);

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