クエリの結果に特定の種類の大量のデータが含まれている場合、重複除外 (個別) 機能を使用して、指定された列に基づいて結果セットを重複除外できます。特定の種類のデータは、結果の種類の多様性を確保するために、クエリ結果に一度だけ表示されます。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
データテーブルが作成され、データがデータテーブルに書き込まれていること。詳細については、データテーブルの作成とデータの書き込みを参照してください。
データテーブルの検索インデックスが作成されていること。詳細については、検索インデックスの作成を参照してください。
使用上の注意
重複除外 (個別) 機能を使用する場合、offset パラメーターと limit パラメーターを指定することによってのみページネーションを実行できます。
結果セットを集計し、同時に重複除外する場合、結果セットは重複除外される前に集計されます。
クエリの結果を重複除外する場合、返される結果の総数は、offset パラメーターと limit パラメーターの値の合計によって決まります。最大 100,000 件の結果を返すことができます。
レスポンスの行の総数は、重複除外 (個別) 機能を使用する前にクエリ条件を満たす行の数を示します。結果セットが重複除外された後、個別の値の総数をクエリすることはできません。
パラメーター
パラメーター | 説明 |
query | クエリの種類。このパラメーターは任意のクエリの種類に設定できます。 |
collapse | fieldName パラメーターで指定されたフィールドに基づいて結果セットを重複除外します。 fieldName: 結果セットの重複除外の基準となるフィールドの名前。値が INTEGER、FLOATING-POINT、または KEYWORD 型のフィールドのみがサポートされています。値が ARRAY 型のフィールドはサポートされていません。 |
offset | 現在のクエリが開始される位置。 |
limit | 現在のクエリで返される行の最大数。 行の特定のデータをクエリせずに、クエリ条件を満たす行の数のみをクエリするには、limit パラメーターを 0 に設定します。 |
getTotalCount | クエリ条件を満たす行の総数を返すかどうかを指定します。このパラメーターのデフォルト値は false で、クエリ条件を満たす行の総数は返されません。 このパラメーターを true に設定すると、クエリのパフォーマンスが低下します。 |
tableName | データテーブルの名前。 |
indexName | 検索インデックスの名前。 |
columnsToGet | クエリ条件を満たす各行のすべての列を返すかどうかを指定します。
|
例
次のサンプルコードは、Match All クエリを使用してテーブル内の行の総数をクエリし、col_keyword 列の値に基づいて結果セットを重複除外する方法の例を示しています。
let searchQuery = {
offset: 0,
limit: 100,
query: {
queryType: TableStore.QueryType.MATCH_ALL_QUERY,
},
collapse: {
fieldName: "col_keyword",
},
getTotalCount: false,
};
let params = {
tableName: tableName,
indexName: indexName,
searchQuery: searchQuery,
columnToGet: { // 返す列を指定します。RETURN_SPECIFIED を設定して指定した列を返すか、RETURN_ALL を設定してすべての列を返すか、RETURN_ALL_FROM_INDEX を設定して検索インデックス内のすべての列を返すか、RETURN_NONE を設定してプライマリキー列のみを返すことができます。
returnType: TableStore.ColumnReturnType.RETURN_ALL_FROM_INDEX
},
timeoutMs: 30000,
}
client.search(params, function (err, data) {
if (err) {
console.log('search error:', err.toString());
} else {
console.log('search success:', data);
}
});
FAQ
参考資料
検索インデックスでは、次のクエリタイプがサポートされています。タームクエリ、タームズクエリ、Match All クエリ、マッチクエリ、マッチフレーズクエリ、プレフィックスクエリ、範囲クエリ、ワイルドカードクエリ、ブールクエリ、ジオクエリ、ネストされたクエリ、ベクトル クエリ、Exists クエリ。ビジネス要件に基づいてクエリタイプを選択してデータをクエリできます。
クエリ条件を満たす行をソートまたはページネーションする場合は、ソートおよびページネーション機能を使用できます。詳細については、ソートとページネーションを参照してください。
特定の列に基づいて結果セットを重複除外する場合は、重複除外 (個別) 機能を使用できます。このようにして、指定されたタイプのデータはクエリ結果に一度だけ表示されます。詳細については、重複除外 (個別)を参照してください。
データテーブル内のデータ (極値、合計、行の総数など) を分析する場合は、集計操作を実行するか、SQL ステートメントを実行できます。詳細については、集計とSQL クエリを参照してください。
行をソートする必要なく、クエリ条件を満たすすべての行をすばやく取得する場合は、ParallelScan 操作と ComputeSplits 操作を呼び出して、パラレル スキャン機能を使用できます。詳細については、パラレル スキャンを参照してください。