指定した範囲内にあるデータをクエリするために、範囲クエリを実行できます。フィールドの型が TEXT の場合、フィールド値はトークン化されます。行内のトークンの少なくとも 1 つがクエリ範囲と一致する場合、行はクエリ条件を満たします。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成とデータの書き込みを参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成を参照してください。
パラメーター
パラメーター | 説明 |
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
参照
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます。用語クエリ、複数用語クエリ、すべて一致クエリ、一致クエリ、一致フレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、地理クエリ、ブールクエリ、KNNベクトル検索クエリ、ネストされたクエリ、存在クエリ。検索インデックスによって提供されるクエリメソッドを使用して、ビジネス要件に基づいて複数のディメンションからデータをクエリできます。
クエリ条件を満たす行は、並べ替え機能とページング機能を使用して並べ替えまたはページングできます。詳細については、並べ替えとページングを参照してください。
特定の列に基づいて結果セットを折りたたむには、collapse(重複排除)機能を使用できます。この方法では、指定されたタイプのデータはクエリ結果に一度だけ表示されます。詳細については、重複排除 (distinct) を参照してください。
データテーブル内のデータを分析する場合は、検索操作の集計機能を使用するか、SQLステートメントを実行できます。たとえば、最小値、最大値、合計、および行の総数を取得できます。詳細については、「集計」および「SQLクエリ」をご参照ください。
行をソートする必要なく、クエリ条件を満たすすべての行を取得する場合は、ParallelScan および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンの実行を参照してください。