すべての一致クエリを使用して、テーブル内のすべての行を一致させ、テーブル内の行の総数をクエリしたり、複数のランダムな行を返したりできます。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成およびデータの書き込みを参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成を参照してください。
パラメーター
パラメーター | 説明 |
query | クエリのタイプ。クエリパラメーターを MatchAllQuery に設定します。 |
tableName | データテーブルの名前。 |
indexName | 検索インデックスの名前。 |
limit | 現在のクエリで返される行の最大数。 現在のクエリで複数のランダムなデータ行を返したい場合は、limit パラメーターを正の整数に設定します。 クエリ条件を満たす行の数を特定のデータなしでクエリするには、limit パラメーターを 0 に設定します。 |
columnsToGet | クエリ条件を満たす各行のすべての列を返すかどうかを指定します。 columnsToGet パラメーターには、returnAll フィールドと columns フィールドを指定できます。 returnAll フィールドのデフォルト値は false で、すべての列が返されないことを指定します。この場合、columns フィールドを使用して、返したい列を指定できます。返したい列を指定しない場合は、主キー列のみが返されます。 returnAll フィールドを true に設定すると、すべての列が返されます。 |
getTotalCount | クエリ条件を満たす行の総数を返すかどうかを指定します。このパラメーターのデフォルト値は false で、クエリ条件を満たす行の総数は返されません。 このパラメーターを true に設定すると、クエリのパフォーマンスが低下します。 |
サンプルコード
次のサンプルコードは、テーブル内の行の総数をクエリする方法の例を示しています:
/**
* すべての一致クエリ機能を使用して、テーブル内の行の総数をクエリします。
* @param client
*/
private static void matchAllQuery(SyncClient client) {
SearchQuery searchQuery = new SearchQuery();
/**
* クエリタイプを MatchAllQuery に設定します。
*/
searchQuery.setQuery(new MatchAllQuery());
/**
* MatchAllQuery ベースのクエリ結果では、TotalCount の値はテーブル内の行の総数です。
* 現在のクエリで複数のランダムなデータ行を返したい場合は、limit パラメーターを正の整数に設定します。
* 行の特定のデータをクエリせずに、クエリ条件を満たす行の数のみをクエリするには、limit パラメーターを 0 に設定します。
*/
searchQuery.setLimit(0);
SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
/**
* クエリ条件を満たす行の総数を返すように指定します。
*/
searchQuery.setGetTotalCount(true);
SearchResponse resp = client.search(searchRequest);
/**
* 返されたクエリ条件を満たす行の総数が正しいかどうかを確認します。 isAllSuccess が false の場合、Tablestore はすべてのサーバーでデータをクエリできず、クエリ条件を満たす行の総数よりも小さい値を返す可能性があります。
*/
if (!resp.isAllSuccess()) {
System.out.println("NotAllSuccess!");
}
System.out.println("IsAllSuccess: " + resp.isAllSuccess());
System.out.println("TotalCount: " + resp.getTotalCount()); // クエリ条件を満たす行の総数を表示します。
System.out.println(resp.getRequestId());
}
FAQ
参考資料
検索インデックスを使用してデータをクエリする場合、次のクエリメソッドを使用できます。タームクエリ、タームズクエリ、すべての一致クエリ、一致クエリ、一致フレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、ジオクエリ、KNNベクタークエリ、ブールクエリ、ネストクエリ、存在クエリ。検索インデックスを作成した後、検索インデックスによって提供されるクエリメソッドを使用して、ビジネス要件に基づいて複数のディメンションからデータをクエリできます。
ソート機能とページング機能を使用して、クエリ条件を満たす行をソートまたはページングできます。詳細については、ソートとページングの実行を参照してください。
折りたたみ(重複排除)機能を使用して、特定の列に基づいて結果セットを折りたたむことができます。このようにすると、指定されたタイプのデータはクエリ結果に1回だけ表示されます。詳細については、折りたたみ(重複排除)を参照してください。
テーブル内のデータを分析する場合は、Search オペレーションを呼び出して集計機能を使用するか、SQL クエリ機能を使用できます。たとえば、最大値と最小値、値の合計、行数をクエリできます。詳細については、集計およびSQL クエリを参照してください。
行をソートする必要なく、クエリ条件を満たすすべての行を取得する場合は、ParallelScan オペレーションと ComputeSplits オペレーションを呼び出して並列スキャン機能を使用できます。詳細については、並列スキャンを参照してください。