クエリ DSL

Elasticsearch は、クエリを定義するために JSON に基づいた完全なクエリ DSL (ドメイン固有言語) を提供します。クエリ DSL をクエリの AST (抽象構文木) と考えてください。これは、2 種類の句から構成されています:

  • リーフクエリ句
  • リーフクエリ句は、特定のフィールド内の特定の値を探します。例えば、matchterm、または range クエリなどです。これらのクエリは単独で使用できます。
  • 複合クエリ句
  • 複合クエリ句は、他のリーフ または 複合クエリをラップし、複数のクエリを論理的に結合するために使用されます(bool または dis_max クエリのように)、またはその動作を変更するために使用されます(constant_score クエリのように)。

クエリ句は、クエリコンテキストまたはフィルターコンテキスト で使用されるかどうかによって異なる動作をします。

このようなクエリの実行は、search.allow_expensive_queries 設定の値を false に設定することで防ぐことができます(デフォルトは true です)。