RangeQuery根據範圍條件查詢表中的資料。對於Text類型欄位,只要分詞後的詞條中有詞條滿足範圍條件即可。

介面

範圍查詢的介面為Search或者ParallelScan,具體的Query類型為RangeQuery。

使用

您可以使用如下語言的SDK實現範圍查詢。

參數

參數 說明
fieldName 要匹配的欄位。
from 起始位置的值。

設定範圍條件時,大於(>)可以使用greaterThan表示,大於等於(>=)可以使用greaterThanOrEqual表示。

to 結束位置的值。

設定範圍條件時,小於(<)可以使用lessThan表示;小於等於(<=)可以使用lessThanOrEqual表示。

includeLower 結果中是否需要包括from值,類型為Boolean。
includeUpper 結果中是否需要包括to值,類型為Boolean。
query 設定查詢類型為RangeQuery。
sort 按照指定方式排序,詳情請參見排序和翻頁
getTotalCount 是否返回匹配的總行數,預設為false,表示不返回。

返回匹配的總行數會影響查詢效能。

tableName 資料表名稱。
indexName 多元索引名稱。
columnsToGet 是否返回所有列,包含returnAll和columns設定。

returnAll預設為false,表示不返回所有列,此時可以通過columns指定返回的列;如果未通過columns指定返回的列,則只返回主鍵列。

當設定returnAll為true時,表示返回所有列。

樣本

/**
 * 查詢表中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)));
    //searchQuery.setGetTotalCount(true); //設定返回匹配的總行數。

    SearchRequest searchRequest = new SearchRequest("sampleTable", "sampleSearchIndex", searchQuery);
    //通過設定columnsToGet參數可以指定返回的列或返回所有列,如果不設定此參數,則預設只返回主鍵列。
    //SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    //columnsToGet.setReturnAll(true); //設定為返回所有列。
    //columnsToGet.setColumns(Arrays.asList("ColName1","ColName2")); //設定為返回指定列。
    //searchRequest.setColumnsToGet(columnsToGet);

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