全部產品
Search
文件中心

Tablestore:尾碼查詢

更新時間:Jul 26, 2026

使用 Tablestore Java SDK 的尾碼查詢可匹配 FuzzyKeyword 欄位中以查詢字串結尾的完整欄位值,並返回匹配行或匹配總行數。

前提條件

安裝Tablestore Java SDK並初始化用戶端。

說明

尾碼查詢需要使用 5.17.0 及以上版本的 Tablestore Java SDK。

功能說明

尾碼查詢用於匹配以查詢字串結尾的完整欄位值。尾碼查詢僅支援 FuzzyKeyword 類型欄位(欄位說明請參見字串類型),且匹配區分大小寫。例如,欄位值 order-H001 可以匹配尾碼 H001,但不能匹配 h001

說明

FuzzyKeyword 類型欄位不支援排序和統計彙總。同一查詢需要排序或統計彙總時,使用其他支援相應功能的欄位。

Keyword 類型欄位不支援 SuffixQuery。如需實現等效的尾碼匹配,可在寫入資料時將欄位值反轉後寫入用於檢索的 Keyword 類型欄位;查詢時反轉待匹配的尾碼字串,並對該欄位執行首碼查詢PrefixQuery)。

調用 search 方法時,將查詢類型設定為 SuffixQuery,並通過 SearchQuery 配置返回數量、總行數統計和其他通用查詢行為。

SearchResponse search(SearchRequest request)

以下樣本查詢 FuzzyKeyword 類型的 phone 欄位值以 1234 結尾的資料,返回最多 10 行資料及匹配總行數。

String tableName = "example_table";
String indexName = "example_index";

SuffixQuery suffixQuery = new SuffixQuery();
suffixQuery.setFieldName("phone");
suffixQuery.setSuffix("1234");

SearchQuery searchQuery = new SearchQuery();
searchQuery.setQuery(suffixQuery);
searchQuery.setLimit(10);
searchQuery.setTrackTotalCount(SearchQuery.TRACK_TOTAL_COUNT);

SearchRequest request = new SearchRequest(tableName, indexName, searchQuery);
SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
columnsToGet.setReturnAll(true);
request.setColumnsToGet(columnsToGet);

SearchResponse response = client.search(request);
System.out.println(response.getTotalCount());
System.out.println(response.getRows());

參數說明

查詢請求

request 的類型為 SearchRequest,包含以下參數。

名稱

類型

說明

tableName(必選)

String

資料表名稱。

indexName(必選)

String

多元索引名稱。

searchQuery(必選)

SearchQuery

查詢條件和通用查詢配置。

columnsToGet(可選)

SearchRequest.ColumnsToGet

返回列配置。未設定時只返回主鍵列。

timeoutInMillisecond(可選)

int

請求級查詢逾時時間,單位為毫秒。預設值為 -1,表示不單獨設定查詢逾時時間。

routingValues(可選)

List<PrimaryKey>

自訂路由欄位對應的主索引值列表。未配置自訂路由時無需設定。

查詢配置

request.searchQuery 的類型為 SearchQuery,包含以下參數。

名稱

類型

說明

query(必選)

Query

查詢條件。尾碼查詢設定為 SuffixQuery

offset(可選)

Integer

本次查詢的起始位置。

limit(可選)

Integer

本次查詢返回的最大行數。設定為 0 時不返回具體行。

collapse(可選)

Collapse

結果摺疊配置,用於按指定列對返回結果去重。有關配置方法,請參見摺疊(去重)

sort(可選)

Sort

返回結果的排序方式。FuzzyKeyword 欄位不能作為排序欄位。有關配置方法,請參見排序和翻頁

trackTotalCount(可選)

int

期望統計的最大匹配行數。預設值為 TRACK_TOTAL_COUNT_DISABLED,表示不統計;設定為 TRACK_TOTAL_COUNT 時統計全部匹配行。值越小,查詢效能越高。

filter(可選)

SearchFilter

query 的查詢結果進行過濾。

aggregationList(可選)

List<Aggregation>

統計彙總配置。FuzzyKeyword 欄位不能作為統計彙總欄位。有關配置方法,請參見統計彙總

groupByList(可選)

List<GroupBy>

分組配置。FuzzyKeyword 欄位不能作為分組欄位。有關配置方法,請參見統計彙總

token(可選)

byte[]

翻頁憑證。將上一次響應的 nextToken 設定為該參數可繼續讀取後續資料。設定 token 時,SDK 會清除 sort,因為翻頁憑證中已包含排序條件。

查詢條件

request.searchQuery.query 的類型為 SuffixQuery,包含以下參數。

名稱

類型

說明

fieldName(必選)

String

要查詢的 FuzzyKeyword 類型索引欄位名稱。

suffix(必選)

String

查詢字串。完整欄位值必須以該字串結尾,且匹配區分大小寫。

weight(可選)

float

查詢條件的相關性權重,必須為正浮點數。值越大,該查詢條件對 BM25 相關性評分的貢獻越高。該參數不影響匹配結果和返回行數,僅在使用 ScoreSort 按相關性評分排序時影響結果順序。預設值為 1.0

返回列

request.columnsToGet 的類型為 SearchRequest.ColumnsToGet,包含以下參數。

名稱

類型

說明

columns(可選)

List<String>

要返回的屬性列名稱。僅 returnAllreturnAllFromIndex 均為 false 時需要設定;未設定時只返回主鍵列。

returnAll(可選)

boolean

是否返回資料表中的全部屬性列。預設值為 false

returnAllFromIndex(可選)

boolean

是否返回已建立索引的全部屬性列。預設值為 false。不能與 returnAll 同時設定為 true

傳回值

search 方法返回 SearchResponse。核心欄位如下。

名稱

類型

說明

totalCount

long

匹配行數,通過 getTotalCount() 擷取。傳回值取決於 trackTotalCount 配置。

rows

List<Row>

本次查詢返回的行資料,通過 getRows() 擷取。返回數量不超過 limit

nextToken

byte[]

下一頁憑證,通過 getNextToken() 擷取。值不為 null 時,將其設定到下一次請求的 token 中繼續讀取。

isAllSuccess

boolean

是否已成功查詢全部索引分割區,通過 isAllSuccess() 擷取。值為 false 時,返回的是部分結果,totalCount 可能小於實際匹配行數。