Joining queries

OpenSearch is a distributed system in which data is spread across multiple nodes. Thus, running a SQL-like JOIN operation in OpenSearch is resource intensive. As an alternative, OpenSearch provides the following queries that perform join operations and are optimized for scaling across multiple nodes:

  • Queries for searching nested fields:
    • nested queries: Act as wrappers for other queries to search nested fields. The nested field objects are searched as though they were indexed as separate documents.
  • Queries for searching documents connected by a join field type, which establishes a parent/child relationship between documents in the same index:
    • has_child queries: Search for parent documents whose child documents match the query.
    • has_parent queries: Search for child documents whose parent documents match the query.
    • parent_id queries: Search for child documents that are joined to a specific parent document.

If search.allow_expensive_queries is set to false, then joining queries are not executed.