すべてのプロダクト
Search
ドキュメントセンター

Tablestore:用語クエリ

最終更新日:Dec 28, 2024

用語クエリは用語クエリと同様に機能しますが、クエリに複数のキーワードを指定して、キーワードの少なくとも 1 つと一致するデータ行を検索できます。この一致メカニズムは、SQL の IN 演算子と同等です。

前提条件

パラメーター

パラメーター

説明

TableName

データテーブルの名前。

IndexName

検索インデックスの名前。

Query

クエリのタイプ。クエリタイプを TermsQuery に設定します。

FieldName

クエリ対象のフィールドの名前。

Terms

用語クエリの実行時にフィールド値の照合に使用されるキーワード。

キーワードの少なくとも 1 つがフィールド値と一致する場合、データ行が返されます。

Limit

現在のクエリで返す最大行数。

クエリ条件を満たす行数を特定のデータを返さずにクエリする場合、Limit を 0 に設定できます。

ColumnsToGet

クエリ条件を満たす各行のすべての列を返すかどうかを指定します。ReturnAll パラメーターと Columns パラメーターを指定できます。

デフォルトでは、ReturnAll パラメーターは false に設定されており、すべての列が返されるわけではないことを示します。 ReturnAll パラメーターが false に設定されている場合、Columns パラメーターを使用して返す列を指定できます。 Columns パラメーターを指定しない場合、プライマリキー列のみが返されます。

ReturnAll パラメーターを true に設定すると、一致する行のすべての列が返されます。

次のサンプルコードは、Col_Keyword 列の値が「hangzhou」または「tablestore」と完全に一致する行をクエリする方法の例を示しています。

/**
 * テーブル内の Col_Keyword 列の値が "hangzhou" または "tablestore" と完全に一致する行をクエリします。
 */
func TermsQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)
    searchRequest.SetIndexName(indexName)
    query := &search.TermsQuery{}   // クエリタイプを TermsQuery に設定します。
    query.FieldName = "Col_Keyword" // クエリ条件の照合に使用するフィールドを設定します。
    terms := make([]interface{}, 0)
    terms = append(terms, "hangzhou")
    terms = append(terms, "tablestore")
    query.Terms = terms // クエリで使用されるキーワードを設定して、列の値と照合します。
    searchQuery := search.NewSearchQuery()
    searchQuery.SetQuery(query)
    searchQuery.SetLimit(100)
    searchRequest.SetSearchQuery(searchQuery)
    // クエリ条件を満たす行のすべての列を返します。
    searchRequest.SetColumnsToGet(&tablestore.ColumnsToGet{
        ReturnAll: true,
    })
    searchResponse, err := client.Search(searchRequest)
    if err != nil {
        fmt.Printf("%#v", err)
        return
    }
    fmt.Println("IsAllSuccess: ", searchResponse.IsAllSuccess) // クエリ条件を満たすすべての行が返されたかどうかを確認します。
    fmt.Println("RowCount: ", len(searchResponse.Rows))
    for _, row := range searchResponse.Rows {
        jsonBody, err := json.Marshal(row)
        if err != nil {
            panic(err)
        }
        fmt.Println("Row: ", string(jsonBody))
    }
}

FAQ

参考資料