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.
nested query
nested. These
fields are used to index arrays of objects, where each object can be queried
(with the nested query) as an independent document.
has_child and has_parent queries
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 terms-lookup mechanism in the terms
query, which allows you to build a terms query from values contained in
another document.