精確查詢

更新時間:
Copy as MD

精確查詢(TermQuery)採用完整精確匹配的方式查詢表中的資料,類似於字串匹配。

前提條件

參數

參數

說明

FieldName

要匹配的欄位名稱。

Term

查詢關鍵詞,即要匹配的值。該詞不會被分詞,直接與欄位值進行精確匹配。

對於 Text 類型欄位,Tablestore 會對欄位值進行分詞,只要分詞後存在與關鍵詞完全一致的詞條即可命中。例如,欄位值為"tablestore is cool",分詞後得到"tablestore"、"is"、"cool"三個詞條,查詢這三個詞條中的任意一個均滿足條件。

GetTotalCount

是否返回匹配的總行數。預設值為 false,表示不返回總行數。設定為 true 會影響查詢效能。

Query

查詢類型,設定為 TermQuery。

TableName

資料表名稱。

IndexName

多元索引名稱。

ColumnsToGet

返回列配置,包含 ReturnAll、Columns 和 ReturnAllFromIndex 三個子參數。

ReturnAll 預設為 false,僅返回主鍵列。如需返回其他列,可通過以下方式配置:

  • 設定 Columns,指定返回的列名。

  • 設定 ReturnAllFromIndex 為 true,返回多元索引中的所有列。

設定 ReturnAll 為 true,返回資料表中的所有列。

樣本

以下樣本查詢 Keyword_type_col 列精確匹配"SearchIndex"的行資料。

/// <summary>
/// 查詢 Keyword_type_col 列精確匹配"SearchIndex"的行資料。
/// </summary>
/// <param name="otsClient"></param>
public static void TermQuery(OTSClient otsClient)
{
    var searchQuery = new SearchQuery();
    // 返回匹配的總行數。
    searchQuery.GetTotalCount = true;
    // 查詢 Keyword_type_col 列值為"SearchIndex"的行。
    searchQuery.Query = new TermQuery("Keyword_type_col", new ColumnValue("SearchIndex"));

    var request = new SearchRequest(TableName, IndexName, searchQuery);
    // 配置返回列:ReturnAllFromIndex 返回多元索引中的所有列。
    // 返回指定列:Columns = new List<string>() { Long_type_col, Text_type_col, Keyword_type_col }
    // 返回資料表所有列:ReturnAll = true
    request.ColumnsToGet = new ColumnsToGet()
    {
        ReturnAllFromIndex = true
    };

    var response = otsClient.Search(request);
    // 可通過 NextToken 實現翻頁查詢。
}

常見問題

相關文檔