ElasticsearchのQuery一覧
Elasticsearch使い始めて少し慣れてきたので、ドキュメントにあるQueryを簡易翻訳しつつまとめる。最初は一回で全部書くつもりだったけど、結構量があったので何回かに分けて書くことにした。
実用例等踏まえて書くよー!
Match All Query
全てのドキュメントにマッチするQuery。
inner_hits
でChildTypeのものを引っ張ってきたり、Nested Query
やHas Child Query
やHas Parent Query
のようなJoining queries
で使うことが多い。
Full Text Query
全部検索する時に使う。検索するテキストもフィールドに指定されているanalyzer、またはQuery内指定したanalyzerで分解、変換してから検索をかけるよ。日本語検索しようとした時、デフォルトのanalyzerだと大体うまくいかないので、kuromoji_analyzerを使って検索することが多い。英語の場合はデフォルトでも結構いける。
Match Query
基本的にこれ使っておけばおkみたいなQuery。
テキストでしか使ったことないけど、数字とか日付でも使えるみた。
Multi Match Query
Match Queryの複数のフィールドを選択できるもの。
スコアリングの方法にbest_fields
、most_fields
等ある。
Common Terms Query
よく出てくる単語("The", "and", "not"等)があると、サーチテキストに対してい本当に関係性の高いものが抽出されなくなる問題を解決するためのQuery。
よく出てくる単語に対するウェイトを低下させ、あまり出てこない単語のウェイトを上げる方式をとっている。
学校の検索とかするときに使えそう。
Query String Query
自分好みのFull Text Queryを作りたいときに使うQuery。
色々設定できるみたい。
Simpe Query String Query
query_string
の例外を投げなかったり、無効なQueryを無視するQuery。
まとめ
Full Text Query
はMatch Query
で事足りる。
Match Query
でスコアリングがうまくいかない時に他のQueryを使うことを検討するのがいい。