LoginSignup
6
7

More than 5 years have passed since last update.

Query DSL in Elasticsearch

Last updated at Posted at 2016-05-08

Queries と Filters

Elasticsearch で検索を実行する方法として、Queries(クエリ)と Filters(フィルター)の2種類が用意されています。

最新版では、クエリとフィルタがマージされました。任意のクエリ句は現在、「クエリーコンテキスト」でクエリとして、フィルターコンテキスト」でフィルタとして使用することができます

Query DSL

Elasticsearchは、クエリを定義するJSONに基づいて、完全なクエリDSLを提供する

Leaf query clauses

  • match
  • term
  • range

    • 特定のフィールドに特定の値を検索できる
    • 単独で使用することができる

Compound query clauses

複合クエリ

Query context

  • クエリは全文検索用に利用する。
  • 関連性のスコアに依存する結果を得たい時に利用する。

Filter context

  • フィルターはキャッシュされ、たいしてメモリも使わない。
  • 他のクエリが同じフィルターを利用する場合は爆速である。
  • term, terms, prefix, range などのフィルターはデフォルトでキャッシュされ、同じフィルターが複数の異なるクエリで利用されるようなケースで推奨される。”age higher than 10″ のような range フィルターのケースなど。
  • 他の geo, scripts などのフィルターはフィールド値とともにメモリーにロードされ、デフォルトではキャッシュされない。これらのフィルターは元々速いし、キャッシュするのに単に実行するより余計な処理が必要なため。
  • 残りの and, not, or などのフィルターは他のフィルターを操作するので、基本的にキャッシュされない。
  • 全てのフィルターは _cache 要素と _cache_key 要素を指定して明示的にキャッシュを操作できる。大きなフィルター作成時などに便利

ref

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7