Tablestore SDK for Node.js のワイルドカードクエリは、* と ? の文字を使用してマッチングパターンを作成し、キーワード、テキスト、または FuzzyKeyword フィールドでそのパターンに一致するデータをクエリします。
クエリパターンが *word* (SQL の WHERE field_a LIKE '%word%' に相当) の場合、トークンベースのワイルドカードクエリ機能を使用すると、より高いパフォーマンスが得られます。データサイズが増加してもパフォーマンスは低下しません。
NOT LIKE 検索を実行するには、BoolQuery の mustNotQueries パラメーターで WildcardQuery を使用します。
前提条件
-
OTSClient インスタンスが初期化されています。詳細については、「OTSClient インスタンスの初期化」をご参照ください。
-
データテーブルが作成され、データがデータテーブルに書き込まれています。詳細については、「データテーブルの作成」および「データの書き込み」をご参照ください。
-
データテーブルの検索インデックスが作成されています。詳細については、「検索インデックスの作成」をご参照ください。
パラメーター
|
パラメーター |
説明 |
|
tableName |
データテーブルの名前。 |
|
indexName |
検索インデックスの名前。 |
|
offset |
現在のクエリを開始する位置。 |
|
limit |
現在のクエリで返す行の最大数。 |
|
queryType |
クエリタイプ。このパラメーターを TableStore.QueryType.WILDCARD_QUERY に設定します。 |
|
fieldName |
クエリ対象の列の名前。 |
|
value |
ワイルドカード文字を含む文字列。文字列の長さは最大 32 文字です。 |
|
getTotalCount |
クエリ条件に一致する行の総数を返すかどうかを指定します。デフォルトでは、このパラメーターの値は false で、クエリ条件に一致する行の総数が返されないことを示します。 getTotalCount パラメーターを true に設定すると、クエリのパフォーマンスが低下します。 |
|
columnToGet |
クエリ条件に一致する各行のすべての列を返すかどうかを指定します。このパラメーターには、returnType と returnNames を設定できます。
|
例
次のサンプルコードでは、Col_Keyword の値が "table*e" という文字列に一致する行を検索します。
/**
* Col_Keyword の値が "table*e" に一致する行をテーブルで検索します。
*/
client.search({
tableName: TABLE_NAME,
indexName: INDEX_NAME,
searchQuery: {
offset: 0,
limit: 10, // クエリ条件に一致する行数をクエリするだけで、特定のデータを返す必要がない場合は、limit を 0 に設定します。これにより、Tablestore はテーブルから特定のデータを取得せずに、条件に一致する行数を返します。
query: { // クエリタイプを TableStore.QueryType.WILDCARD_QUERY に設定します。
queryType: TableStore.QueryType.WILDCARD_QUERY,
query: {
fieldName: "Col_Keyword",
value: "table*e" // ワイルドカードクエリで、1 つ以上のワイルドカード文字を含む文字列を指定します。
}
},
getTotalCount: true // クエリ条件に一致する行の総数を返すかどうかを指定します。デフォルトは false で、その場合は総数を返しません。
},
columnToGet: { // 返す列を指定します。RETURN_SPECIFIED (指定列)、RETURN_ALL (全列)、RETURN_ALL_FROM_INDEX (インデックス内の全列)、RETURN_NONE (主キー列のみ) が設定可能です。
returnType: TableStore.ColumnReturnType.RETURN_ALL
}
}, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data, null, 2));
});
よくある質問
関連ドキュメント
-
検索インデックスでは、term クエリ、terms クエリ、match all クエリ、match クエリ、match phrase クエリ、prefix クエリ、range クエリ、ワイルドカードクエリ、ブールクエリ、geo クエリ、nested クエリ、vector クエリ、exists クエリといったクエリタイプがサポートされています。ビジネス要件に基づいてクエリタイプを選択し、データをクエリできます。
クエリ条件に一致する行をソートまたはページネーションする場合は、ソートとページネーション機能を使用できます。詳細については、「ソートとページネーション」をご参照ください。
特定の列に基づいて結果セットを折りたたむ場合は、折りたたみ (distinct) 機能を使用できます。これにより、指定したタイプのデータがクエリ結果に 1 回だけ表示されるようになります。詳細については、「折りたたみ (distinct)」をご参照ください。
-
データテーブル内のデータを分析したい場合、たとえば、極値、合計、総行数を取得するなど、集計操作を実行したり、SQL ステートメントを実行したりできます。詳細については、「集計」および「SQL クエリ」をご参照ください。
-
行をソートする必要がなく、クエリ条件に一致するすべての行を迅速に取得したい場合は、ParallelScan および ComputeSplits オペレーションを呼び出してパラレルスキャン機能を使用できます。詳細については、「パラレルスキャン」をご参照ください。