Bird
Raised Fist0
Elasticsearchquery~10 mins

Nested queries for nested objects in Elasticsearch - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to start a nested query on the field 'comments'.

Elasticsearch
{
  "query": {
    "nested": {
      "path": "[1]"
    }
  }
}
Drag options to blanks, or click blank then click option'
Acomments
Buser
Cposts
Dtags
Attempts:
3 left
💡 Hint
Common Mistakes
Using a non-nested field name in the path.
Forgetting to specify the path.
2fill in blank
medium

Complete the code to add a match query inside the nested query for 'comments.author'.

Elasticsearch
{
  "query": {
    "nested": {
      "path": "comments",
      "query": {
        "match": {
          "comments.[1]": "Alice"
        }
      }
    }
  }
}
Drag options to blanks, or click blank then click option'
Atext
Bauthor
Cdate
Dlikes
Attempts:
3 left
💡 Hint
Common Mistakes
Using a field not inside the nested object.
Using the nested path name instead of the nested field.
3fill in blank
hard

Fix the error in the nested query by completing the missing key for the inner query.

Elasticsearch
{
  "query": {
    "nested": {
      "path": "comments",
      "query": {
        "[1]": {
          "must": {
            "match": {
              "comments.text": "great"
            }
          }
        }
      }
    }
  }
}
Drag options to blanks, or click blank then click option'
Abool
Bmatch
Cterm
Drange
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'match' as the key instead of 'bool'.
Using 'term' or 'range' which are not container queries.
4fill in blank
hard

Fill both blanks to create a nested query that filters comments with 'likes' greater than 10.

Elasticsearch
{
  "query": {
    "nested": {
      "path": "comments",
      "query": {
        "range": {
          "comments.[1]": {
            "[2]": 10
          }
        }
      }
    }
  }
}
Drag options to blanks, or click blank then click option'
Alikes
Bgt
Clt
Dauthor
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'lt' instead of 'gt' for greater than.
Using a wrong field name like 'author'.
5fill in blank
hard

Fill all three blanks to create a nested query that matches comments by 'author' 'Bob' and filters by 'date' after '2023-01-01'.

Elasticsearch
{
  "query": {
    "nested": {
      "path": "comments",
      "query": {
        "bool": {
          "must": [
            { "match": { "comments.[1]": "Bob" } },
            { "range": { "comments.[2]": { "[3]": "2023-01-01" } } }
          ]
        }
      }
    }
  }
}
Drag options to blanks, or click blank then click option'
Aauthor
Bdate
Cgte
Dlikes
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'gt' instead of 'gte' for inclusive date filtering.
Mixing up field names like 'likes' instead of 'date'.

Practice

(1/5)
1. What is the main purpose of a nested query in Elasticsearch?
easy
A. To aggregate numeric values across documents
B. To search inside objects stored within other objects
C. To perform full-text search on string fields
D. To update documents in bulk

Solution

  1. Step 1: Understand nested objects

    Nested objects are objects stored inside other objects in Elasticsearch documents.
  2. Step 2: Purpose of nested query

    The nested query lets you search inside these nested objects specifically.
  3. Final Answer:

    To search inside objects stored within other objects -> Option B
  4. Quick Check:

    Nested query = search inside nested objects [OK]
Hint: Nested queries search inside nested objects only [OK]
Common Mistakes:
  • Confusing nested query with full-text search
  • Using nested query on non-nested fields
  • Thinking nested query updates documents
2. Which of the following is the correct syntax to specify the path in a nested query?
easy
A. "nested": { "path": "comments", "query": { ... } }
B. "nested": { "field": "comments", "query": { ... } }
C. "nested": { "location": "comments", "query": { ... } }
D. "nested": { "object": "comments", "query": { ... } }

Solution

  1. Step 1: Identify the correct key for nested path

    The nested query requires the key path to specify the nested object location.
  2. Step 2: Match syntax with options

    Only "nested": { "path": "comments", "query": { ... } } uses "path": "comments" correctly.
  3. Final Answer:

    "nested": { "path": "comments", "query": { ... } } -> Option A
  4. Quick Check:

    Nested query uses "path" key [OK]
Hint: Use "path" key to specify nested object location [OK]
Common Mistakes:
  • Using "field" instead of "path"
  • Using incorrect keys like "location" or "object"
  • Omitting the "path" key entirely
3. Given this nested mapping for comments and this query:
{
  "query": {
    "nested": {
      "path": "comments",
      "query": {
        "match": { "comments.message": "great" }
      }
    }
  }
}

What documents will this query return?
medium
A. Documents without any comments
B. Documents where all comments contain the word "great"
C. Documents with the word "great" anywhere in the document
D. Documents with at least one comment containing the word "great"

Solution

  1. Step 1: Understand nested query behavior

    The nested query matches documents where at least one nested object matches the query condition.
  2. Step 2: Analyze the match condition

    The query matches if any comment's message contains "great".
  3. Final Answer:

    Documents with at least one comment containing the word "great" -> Option D
  4. Quick Check:

    Nested query matches any nested object meeting condition [OK]
Hint: Nested query matches if any nested object matches [OK]
Common Mistakes:
  • Thinking all nested objects must match
  • Confusing nested query with top-level match
  • Ignoring the nested path requirement
4. Identify the error in this nested query:
{
  "query": {
    "nested": {
      "path": "comments",
      "query": {
        "match": { "message": "great" }
      }
    }
  }
}
medium
A. The field "message" should be prefixed with the nested path "comments.message"
B. The "path" key is missing
C. The nested query cannot use match queries
D. The query should be inside a bool query

Solution

  1. Step 1: Check field names in nested query

    Fields inside nested queries must be fully qualified with the nested path prefix.
  2. Step 2: Identify the missing prefix

    The query uses "message" instead of "comments.message" which is incorrect.
  3. Final Answer:

    The field "message" should be prefixed with the nested path "comments.message" -> Option A
  4. Quick Check:

    Nested query fields need full path prefix [OK]
Hint: Prefix nested fields with path in queries [OK]
Common Mistakes:
  • Omitting nested path prefix in field names
  • Assuming nested query disallows match queries
  • Forgetting to include the "path" key
5. You have documents with a nested field reviews containing rating and comment. You want to find documents with at least one review having rating >= 4 and comment containing "excellent". Which nested query correctly achieves this?
hard
A. { "bool": { "must": [ { "range": { "reviews.rating": { "gte": 4 } } }, { "match": { "reviews.comment": "excellent" } } ] } }
B. { "nested": { "path": "reviews", "query": { "match": { "reviews.comment": "excellent" } } } }
C. { "nested": { "path": "reviews", "query": { "bool": { "must": [ { "range": { "reviews.rating": { "gte": 4 } } }, { "match": { "reviews.comment": "excellent" } } ] } } } }
D. { "nested": { "path": "reviews", "query": { "range": { "reviews.rating": { "gte": 4 } } } } }

Solution

  1. Step 1: Combine conditions inside nested query

    Both rating and comment conditions must be inside the nested query to match the same nested object.
  2. Step 2: Use bool must to combine conditions

    Use a bool query with must array to require both conditions.
  3. Step 3: Verify field names and structure

    { "nested": { "path": "reviews", "query": { "bool": { "must": [ { "range": { "reviews.rating": { "gte": 4 } } }, { "match": { "reviews.comment": "excellent" } } ] } } } } correctly uses "reviews.rating" and "reviews.comment" inside nested query with bool must.
  4. Final Answer:

    { "nested": { "path": "reviews", "query": { "bool": { "must": [ { "range": { "reviews.rating": { "gte": 4 } } }, { "match": { "reviews.comment": "excellent" } } ] } } } } -> Option C
  5. Quick Check:

    Combine conditions inside nested bool query [OK]
Hint: Use bool must inside nested query to combine conditions [OK]
Common Mistakes:
  • Putting conditions outside nested query
  • Using only one condition inside nested query
  • Not prefixing fields with nested path
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard