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

Tablestore:プレフィックスクエリ

最終更新日:Dec 28, 2024

プレフィックスクエリを実行して、指定したプレフィックスに一致するデータをクエリできます。プレフィックス条件の照合に使用されるフィールドが TEXT フィールドの場合、フィールド値はトークン化されます。少なくとも 1 つのトークンに指定されたプレフィックスが含まれている場合、行はクエリ条件を満たします。

前提条件

パラメータ

パラメータ

説明

TableName

データテーブルの名前。

IndexName

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

Query

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

FieldName

照合するフィールドの名前。

Prefix

プレフィックス。

プレフィックス条件の照合に使用されるフィールドが TEXT フィールドの場合、フィールド値はトークン化されます。少なくとも 1 つのトークンに指定されたプレフィックスが含まれている場合、行はクエリ条件を満たします。

GetTotalCount

クエリ条件を満たす行の総数を返すかどうかを指定します。デフォルト値: false。

このパラメータを true に設定すると、クエリのパフォーマンスが低下します。

ColumnsToGet

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

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

ReturnAll を true に設定すると、すべての列が返されます。

サンプルコード

次のサンプルコードは、Col_Keyword の値が 'hangzhou' で始まる行をクエリする方法の例を示しています。

/**
 * テーブル内の Col_Keyword 列の値に "hangzhou" プレフィックスが含まれる行をクエリします。
 */
func PrefixQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)
    searchRequest.SetIndexName(indexName)
    query := &search.PrefixQuery{} // クエリタイプを PrefixQuery に設定します。
    query.FieldName = "Col_Keyword" // 照合するフィールドの名前を指定します。
    query.Prefix = "hangzhou" // 列の値と照合するために使用するプレフィックスを指定します。
    searchQuery := search.NewSearchQuery()
    searchQuery.SetQuery(query)
    searchQuery.SetGetTotalCount(true)
    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("TotalCount: ", searchResponse.TotalCount) // 返された行数ではなく、クエリ条件を満たす行の総数を表示します。
    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

参考資料