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

Tablestore:範囲クエリ

最終更新日:Dec 28, 2024

指定した範囲内にあるデータをクエリするために、範囲クエリを実行できます。フィールドの型が TEXT の場合、フィールド値はトークン化されます。行内のトークンの少なくとも 1 つがクエリ範囲と一致する場合、行はクエリ条件を満たします。

前提条件

パラメーター

パラメーター

説明

TableName

データテーブルの名前。

IndexName

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

Query

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

FieldName

一致させたいフィールドの名前。

From

クエリが開始する値。

GT または GTE を使用して範囲を指定できます。GT は、範囲内の値が指定された値よりも大きいことを示します。GTE は、範囲内の値が指定された値以上であることを示します。

To

クエリが終了する値。

LT または LTE を使用して範囲を指定できます。LT は、範囲内の値が指定された値よりも小さいことを示します。LTE は、範囲内の値が指定された値以下であることを示します。

IncludeLower

レスポンスに From パラメーターの値を含めるかどうかを指定します。このパラメーターの値は BOOLEAN データ型です。

IncludeUpper

レスポンスに To パラメーターの値を含めるかどうかを指定します。このパラメーターの値は BOOLEAN データ型です。

Sort

ソート方法。詳細については、ソートとページングの実行を参照してください。

ColumnsToGet

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

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

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

サンプルコード

次のサンプルコードは、Col_Long の値が 3 より大きい行をクエリする方法の例を示しています。Tablestore は、Col_Long 列の値に基づいてクエリ結果を降順にソートします。

/**
 * テーブル内の Col_Long 列の値が 3 より大きい行をクエリします。Tablestore は、Col_Long 列の値に基づいてクエリ結果を降順にソートします。
 */
func RangeQuery(client *tablestore.TableStoreClient, tableName string, indexName string) {
    searchRequest := &tablestore.SearchRequest{}
    searchRequest.SetTableName(tableName)
    searchRequest.SetIndexName(indexName)
    searchQuery := search.NewSearchQuery()
    rangeQuery := &search.RangeQuery{} // クエリタイプを RangeQuery に設定します。
    rangeQuery.FieldName = "Col_Long" // クエリする列の名前を指定します。
    rangeQuery.GT(3) // 列値の範囲を指定します。これは 3 より大きいです。
    searchQuery.SetQuery(rangeQuery)
    // Col_Long 列の値に基づいてクエリ結果を降順にソートします。
    searchQuery.SetSort(&search.Sort{
        []search.Sorter{
            &search.FieldSort{
                FieldName: "Col_Long",
                Order:     search.SortOrder_DESC.Enum(),
            },
        },
    })
    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

参照