ES クエリを作成するためのガイドはありますか? 何をすべきか、何を避けるべきか、この種のものです。公式サイトにはさまざまな検索方法がすべて説明されていますが、いつ何を選択するかについてはほとんど説明されていません。
私の特定の例では、プロバイダーのリストがあり、それぞれに名前、アドレス、および多数の ID があります。ユーザーがプロバイダーについて知っていることを入力して、提供されたものに基づいて検索を実行できるボックスをユーザーに提供したいと考えています。基本的に、ボックスのすべての単語をインデックス内のレコード (ドキュメント) と照合したいと考えています。
エンド ユーザーにとって、これは単純なキーワード検索のように見えるはずです。
一致は、完全一致、ワイルドカード一致、音声一致、類義語 (名前の場合) をカバーする必要があります。また、多少のぼやけも含まれている必要があります。
公式サイトにはその方法がいろいろ書かれていますが、それらを組み合わせるにはどうすればよいのでしょうか。たとえば、ワイルド カード検索をサポートするには、ワイルド カード クエリを使用しますか? それとも NGram でインデックスを作成し、テキスト クエリのみを実行しますか?
SQL クエリでこの種の情報を取得する特定の方法は、クエリの実行計画を確認することです。SQL オプティマイザーが、かなりのサイズのテーブルに対してテーブル スキャンを使用することを通知した場合、クエリを変更するか、場合によってはインデックスを追加する必要があることがわかります。私の知る限り、ES にはこの強力な機能に相当するものはなく、それを構築できるかどうかさえわかりません。
しかし、少なくともいくつかの一般的な考慮事項...? かなりください...