[[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. <>:: Documents may contain fields of type <>. These fields are used to index arrays of objects, where each object can be queried (with the `nested` query) as an independent document. <> and <> queries:: A <> 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 <> in the `terms` query, which allows you to build a `terms` query from values contained in another document. [discrete] [[joining-queries-notes]] ==== Notes [discrete] ===== Allow expensive queries Joining queries will not be executed if <> is set to false. include::nested-query.asciidoc[] include::has-child-query.asciidoc[] include::has-parent-query.asciidoc[] include::parent-id-query.asciidoc[]