2013-08-28 19:24:34 -04:00
|
|
|
[[query-dsl]]
|
|
|
|
= Query DSL
|
|
|
|
|
|
|
|
[partintro]
|
|
|
|
--
|
|
|
|
*elasticsearch* provides a full Query DSL based on JSON to define
|
|
|
|
queries. In general, there are basic queries such as
|
|
|
|
<<query-dsl-term-query,term>> or
|
|
|
|
<<query-dsl-prefix-query,prefix>>. There are
|
|
|
|
also compound queries like the
|
|
|
|
<<query-dsl-bool-query,bool>> query. Queries can
|
|
|
|
also have filters associated with them such as the
|
|
|
|
<<query-dsl-filtered-query,filtered>> or
|
|
|
|
<<query-dsl-constant-score-query,constant_score>>
|
|
|
|
queries, with specific filter queries.
|
|
|
|
|
|
|
|
Think of the Query DSL as an AST of queries. Certain queries can contain
|
|
|
|
other queries (like the
|
|
|
|
<<query-dsl-bool-query,bool>> query), others can
|
|
|
|
contain filters (like the
|
|
|
|
<<query-dsl-constant-score-query,constant_score>>),
|
|
|
|
and some can contain both a query and a filter (like the
|
|
|
|
<<query-dsl-filtered-query,filtered>>). Each of
|
|
|
|
those can contain *any* query of the list of queries or *any* filter
|
|
|
|
from the list of filters, resulting in the ability to build quite
|
|
|
|
complex (and interesting) queries.
|
|
|
|
|
|
|
|
Both queries and filters can be used in different APIs. For example,
|
|
|
|
within a <<search-request-query,search query>>, or
|
2014-08-13 09:43:47 -04:00
|
|
|
as an <<search-aggregations-bucket-filter-aggregation,aggregation filter>>.
|
|
|
|
This section explains the components (queries and filters) that can form the
|
2013-08-28 19:24:34 -04:00
|
|
|
AST one can use.
|
|
|
|
|
|
|
|
Filters are very handy since they perform an order of magnitude better
|
|
|
|
than plain queries since no scoring is performed and they are
|
|
|
|
automatically cached.
|
|
|
|
|
|
|
|
--
|
|
|
|
|
|
|
|
include::query-dsl/queries.asciidoc[]
|
|
|
|
|
|
|
|
include::query-dsl/filters.asciidoc[]
|