前回のエントリで、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のクエリをざっくり見てみました。
用語クエリだけでもいろいろ種類がありますね。
次は全文検索クエリの種類を見ていきたいと思います