mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-06 21:18:31 +00:00
dac720d7a1
Add a new cluster setting `search.allow_expensive_queries` which by default is `true`. If set to `false`, certain queries that have usually slow performance cannot be executed and an error message is returned. - Queries that need to do linear scans to identify matches: - Script queries - Queries that have a high up-front cost: - Fuzzy queries - Regexp queries - Prefix queries (without index_prefixes enabled - Wildcard queries - Range queries on text and keyword fields - Joining queries - HasParent queries - HasChild queries - ParentId queries - Nested queries - Queries on deprecated 6.x geo shapes (using PrefixTree implementation) - Queries that may have a high per-document cost: - Script score queries - Percolate queries Closes: #29050 (cherry picked from commit a8b39ed842c7770bd9275958c9f747502fd9a3ea)
36 lines
1.3 KiB
Plaintext
36 lines
1.3 KiB
Plaintext
[[joining-queries]]
|
|
== Joining queries
|
|
|
|
Performing full SQL-style joins in a distributed system like Elasticsearch is
|
|
prohibitively expensive. Instead, Elasticsearch offers two forms of join
|
|
which are designed to scale horizontally.
|
|
|
|
<<query-dsl-nested-query,`nested` query>>::
|
|
Documents may contain fields of type <<nested,`nested`>>. These
|
|
fields are used to index arrays of objects, where each object can be queried
|
|
(with the `nested` query) as an independent document.
|
|
|
|
<<query-dsl-has-child-query,`has_child`>> and <<query-dsl-has-parent-query,`has_parent`>> queries::
|
|
A <<parent-join,`join` field relationship>> can exist between
|
|
documents within a single index. The `has_child` query returns parent
|
|
documents whose child documents match the specified query, while the
|
|
`has_parent` query returns child documents whose parent document matches the
|
|
specified query.
|
|
|
|
Also see the <<query-dsl-terms-lookup,terms-lookup mechanism>> in the `terms`
|
|
query, which allows you to build a `terms` query from values contained in
|
|
another document.
|
|
|
|
include::nested-query.asciidoc[]
|
|
|
|
include::has-child-query.asciidoc[]
|
|
|
|
include::has-parent-query.asciidoc[]
|
|
|
|
include::parent-id-query.asciidoc[]
|
|
|
|
=== Notes
|
|
==== Allow expensive queries
|
|
Joining queries will not be executed if <<query-dsl-allow-expensive-queries, `search.allow_expensive_queries`>>
|
|
is set to false.
|