You are currently viewing OpenSearch QueryDSL Termクエリを見てみる

OpenSearch QueryDSL Termクエリを見てみる

前回のエントリで、OpenSearchには用語レベルのクエリと全文クエリの2タイプあることがわかりました。
今回は用語レベルのクエリを少し詳しく見ていきます
用語クエリに利用できるキーワードはこちら
https://opensearch.org/docs/latest/query-dsl/term/

用語クエリはインデックスのフィールドタイプが「keyword」のものに対して利用します

色々試してみる

OpenSearchに付属しているe-Commerceサンプルのデータを利用してクエリ検索を行ってみます
e-CommerceサンプルデータのデータQuery Workbenchを利用してSQLライクに確認できます

indexの情報はGETメソッドでインデックスにアクセスすれば取得できます(OpenSearch DashboardのDev Toolsから実行できます)

GET opensearch_dashboards_sample_data_ecommerce

term

正確な用語で検索
なので、1件だけヒット

試しに条件を1桁削ったところ、ヒットなし! なので文字通り正確な用語で検索されるようです

terms

こちらはtermクエリの複数版になります

terms_set

こちらはフィールドタイプに配列指定で複数キーワードを設定したときに効果を発揮するようです。
複数設定したキーワードで、最低一致数を指定して検索できるようです
(サンプルデータに該当するデータが無かったため、試すことは出来ず)

ids

ドキュメントID指定で検索。複数指定可能
ピンポイントでドキュメントを取得するときに利用できそうです

range

範囲検索。大なり小なりの指定方法がちょっと特殊なのが注意です

prefix

前方一致で検索します

exists

指定したフィールドが存在するか確認します。データではなく「フィールド」というのが注意ですね

fuzzy

説明が難しいので、公式ドキュメントに丸投げします・・・
https://opensearch.org/docs/latest/query-dsl/term/#fuzzy

説明を読んだ感じ、スペルミスなどを考慮して検索するときに使えそうです

あ・え・て「sanday」を検索すると、SundayやMondayがヒットしました

wildcard

こちらは*や?を使って検索できる、いつものやつです

regex

こちらは正規表現で検索します
(eエールアドレスの先頭3文字がa-gで構成される という検索条件)
ただ、正規表現検索は独特の使用やパフォーマンスの影響があるようなので、公式ドキュメントを確認したほうが良さそうです
https://opensearch.org/docs/latest/query-dsl/term/#regexp

以上です

OpenSearchのクエリをざっくり見てみました。
用語クエリだけでもいろいろ種類がありますね。
次は全文検索クエリの種類を見ていきたいと思います

コメントを残す