Exists クエリは、NULL クエリまたは NULL 値クエリとも呼ばれます。このクエリはスパースデータにおいて、ある行の特定の列が存在するかどうかを判定するために使用されます。たとえば、address 列の値が空でない行をクエリできます。
-
Nested 列に対して Exists クエリを実行する場合は、ネストされたクエリを使用してください。
-
列に空の値が含まれているかどうかを確認するには、ExistsQuery を BoolQuery の mustNotQueries と組み合わせて使用する必要があります。
-
以下のいずれかの条件を満たす場合、システムはその列が存在しないとみなします。ここでは city 列を例に説明します。
-
検索インデックス内の city 列の型は、キーワードなどの基本型です。データテーブル内に city 列が存在しない行がある場合、検索インデックスはその city 列が存在しないとみなします。
-
多次元インデックスにおける city 列の型が keyword などの基本型であり、データテーブル内の行の city 列の値が空の配列 ("city" = "[]") である場合、多次元インデックスは city 列が存在しないとみなします。
-
前提条件
-
OTSClient インスタンスが初期化されていること。詳細については、「Initialize an OTSClient instance」をご参照ください。
-
データテーブルが作成され、データがデータテーブルに書き込まれます。詳細については、「データテーブルを作成する」と「データを書き込む」をご参照ください。
-
データテーブルに対して多次元インデックスが作成されていること。詳細については、「Create a search index」をご参照ください。
パラメーター
|
Parameter |
Description |
|
fieldName |
クエリ対象のフィールド名。 |
|
query |
クエリタイプ。Exists クエリを実行するには、このパラメーターを |
|
getTotalCount |
クエリ条件に一致する行の総数を返すかどうかを指定します。デフォルト値は false です。 true を設定すると、クエリのパフォーマンスが低下します。 |
|
tableName |
データテーブルの名前。 |
|
indexName |
検索インデックスの名前です。 |
|
columnsToGet |
一致した各行に対して返す列。
|
使用例
次の例では、pic_des 列が空でない行をクエリします。
client.search({
tableName: TABLE_NAME,
indexName: INDEX_NAME,
searchQuery: {
offset: 0,
limit: 10, // limit を 0 に設定すると、データなしで行数のみを返します。
query: {
queryType: TableStore.QueryType.EXISTS_QUERY,
query: {
fieldName: "pic_des"
},
},
getTotalCount: true // 一致する行の総数を返すには true を設定します。デフォルト値は false です。
},
columnToGet: { // RETURN_SPECIFIED: 指定列; RETURN_ALL: すべての列; RETURN_ALL_FROM_INDEX: 多次元インデックス内のすべての列; RETURN_NONE: プライマリキー列のみ。
returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
returnNames: ["Col_1", "Col_2", "Col_3"]
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
よくある質問
関連ドキュメント
多次元インデックスでサポートされるクエリタイプは次のとおりです:term query、terms query、match all query、match query、match phrase query、prefix query、range query、wildcard query、Boolean query、geo query、nested query、vector query、および exists query。ビジネス要件に基づいて適切なクエリタイプを選択し、データをクエリできます。
クエリ条件を満たす行をソートまたはページングする場合は、ソートおよびページング機能を使用できます。詳細については、「Sorting and paging」をご参照ください。
特定の列に基づいて結果セットを折りたたむ(distinct)場合は、折りたたみ(distinct)機能を使用できます。これにより、指定されたタイプのデータがクエリ結果内に 1 回だけ表示されます。詳細については、「Collapse (distinct)」をご参照ください。
データテーブル内のデータを分析し、最大値・最小値、合計値、行数などを取得する場合は、集約操作を実行するか、SQL ステートメントを実行できます。詳細については、「Aggregation」および「SQL query」をご参照ください。
行をソートする必要がなく、クエリ条件を満たすすべての行を迅速に取得したい場合は、ParallelScan 操作および ComputeSplits 操作を呼び出して並列スキャン機能を使用できます。詳細については、「Parallel scan」をご参照ください。