Bird
Raised Fist0
Elasticsearchquery~20 mins

Partial updates in Elasticsearch - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Elasticsearch Partial Update Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this partial update script?
Given the following Elasticsearch update request, what will be the value of the counter field after the update?
Elasticsearch
{
  "script": {
    "source": "ctx._source.counter += params.increment",
    "params": {"increment": 3}
  }
}
AThe <code>counter</code> field will be set to 3 regardless of its previous value.
BThe <code>counter</code> field will increase by 3 from its current value.
CThe update will fail because <code>ctx._source.counter</code> is not defined.
DThe <code>counter</code> field will be removed from the document.
Attempts:
2 left
💡 Hint
Think about how the script modifies the existing field value.
❓ Predict Output
intermediate
2:00remaining
What happens if you use a partial update with a nested field?
Consider this partial update request to change a nested field address.city. What will be the result?
Elasticsearch
{
  "doc": {
    "address": {
      "city": "Newville"
    }
  }
}
AOnly the <code>city</code> inside <code>address</code> is updated; other <code>address</code> fields remain unchanged.
BThe entire <code>address</code> object is replaced with {"city": "Newville"}.
CThe update will fail because nested fields cannot be updated partially.
DThe <code>city</code> field is added at the root level, not inside <code>address</code>.
Attempts:
2 left
💡 Hint
Partial updates merge the provided fields into the existing document.
🔧 Debug
advanced
2:00remaining
Why does this partial update script cause an error?
This update script is intended to add a tag to a list field tags. Why does it fail?
Elasticsearch
{
  "script": {
    "source": "ctx._source.tags.add(params.new_tag)",
    "params": {"new_tag": "urgent"}
  }
}
AThe <code>add</code> method is not supported in Elasticsearch scripts.
BThe script syntax is invalid because it lacks a return statement.
CThe parameter <code>new_tag</code> is not passed correctly.
DThe <code>tags</code> field is null or missing, so calling <code>add</code> causes a NullPointerException.
Attempts:
2 left
💡 Hint
Check if the tags field exists and is initialized as a list.
🧠 Conceptual
advanced
2:00remaining
What is the effect of using doc_as_upsert in a partial update?
When you set doc_as_upsert to true in an update request, what happens if the document does not exist?
AThe partial document is inserted as a new document.
BThe update fails with a document not found error.
CThe update request is ignored silently.
DA new empty document is created without the partial fields.
Attempts:
2 left
💡 Hint
Think about how upsert works in Elasticsearch.
❓ Predict Output
expert
3:00remaining
What is the final document after this partial update with a script?
Given the document {"count": 5, "tags": ["old"]} and this update request, what is the final document?
Elasticsearch
{
  "script": {
    "source": "ctx._source.count = params.count; ctx._source.tags.add(params.tag)",
    "params": {"count": 10, "tag": "new"}
  }
}
A{"count": 5, "tags": ["old", "new"]}
B{"count": 10, "tags": ["new"]}
C{"count": 10, "tags": ["old", "new"]}
DThe update fails with a NullPointerException.
Attempts:
2 left
💡 Hint
The script sets count and adds a tag to the existing list.

Practice

(1/5)
1. What is the main purpose of using partial updates in Elasticsearch?
easy
A. To delete a document completely from the index
B. To create a new document with all fields specified
C. To update only specific fields of a document without replacing the whole document
D. To retrieve documents matching a query

Solution

  1. Step 1: Understand partial update concept

    Partial updates allow changing only some fields of a document instead of replacing the entire document.
  2. Step 2: Identify the main purpose

    This saves bandwidth and time by sending only the changed fields, not the whole document.
  3. Final Answer:

    To update only specific fields of a document without replacing the whole document -> Option C
  4. Quick Check:

    Partial update = update some fields only [OK]
Hint: Partial updates change only some fields, not whole document [OK]
Common Mistakes:
  • Confusing partial update with document deletion
  • Thinking partial update creates new documents
  • Believing partial update retrieves documents
2. Which of the following is the correct syntax to perform a partial update on a document with ID '1' in index 'products'?
easy
A. POST /products/_doc/1 { "price": 20 }
B. POST /products/_update/1 { "doc": { "price": 20 } }
C. PUT /products/_update/1 { "price": 20 }
D. GET /products/_update/1 { "doc": { "price": 20 } }

Solution

  1. Step 1: Identify correct HTTP method and endpoint

    Partial updates use POST method on the _update API with the document ID.
  2. Step 2: Check request body format

    The update body must include a "doc" key with the fields to update.
  3. Final Answer:

    POST /products/_update/1 { "doc": { "price": 20 } } -> Option B
  4. Quick Check:

    Use POST + _update + doc key [OK]
Hint: Use POST with _update and doc key for partial updates [OK]
Common Mistakes:
  • Using GET instead of POST for update
  • Omitting the 'doc' key in request body
  • Using PUT on _update endpoint incorrectly
  • Updating with _doc endpoint instead of _update
3. Given this partial update request on document ID '2' in index 'users':
POST /users/_update/2
{
  "doc": {
    "age": 30
  }
}

If the original document was {"name": "Alice", "age": 25}, what will be the document after the update?
medium
A. {"name": "Alice", "age": 30}
B. {"age": 30}
C. {"name": "Alice"}
D. {"name": "Alice", "age": 25, "updated": true}

Solution

  1. Step 1: Understand partial update effect

    The partial update changes only the "age" field to 30, keeping other fields unchanged.
  2. Step 2: Apply update to original document

    Original document {"name": "Alice", "age": 25} becomes {"name": "Alice", "age": 30} after update.
  3. Final Answer:

    {"name": "Alice", "age": 30} -> Option A
  4. Quick Check:

    Partial update changes only specified fields [OK]
Hint: Partial update changes only given fields, others stay same [OK]
Common Mistakes:
  • Thinking update replaces whole document
  • Assuming fields not in doc are removed
  • Adding extra fields not in update request
4. You try this partial update:
POST /orders/_update/5
{
  "doc": {
    "status": "shipped"
  }
}

But you get an error. Which is the most likely cause?
medium
A. The document with ID '5' does not exist in 'orders' index
B. You used GET instead of POST
C. You forgot to include the 'doc' key in the body
D. The 'status' field cannot be updated

Solution

  1. Step 1: Check common update errors

    Partial update errors often happen if the document ID does not exist.
  2. Step 2: Analyze given request and error cause

    The syntax is correct, so the likely cause is missing document with ID '5'.
  3. Final Answer:

    The document with ID '5' does not exist in 'orders' index -> Option A
  4. Quick Check:

    Missing document ID causes update error [OK]
Hint: Check if document ID exists before updating [OK]
Common Mistakes:
  • Confusing HTTP method errors with missing document
  • Assuming all fields are immutable
  • Omitting 'doc' key causing syntax errors
5. You want to increase the 'stock' field by 10 in a product document with ID '10' using a partial update. Which request body correctly achieves this?
hard
A. { "update": { "stock": 10 } }
B. { "doc": { "stock": 10 } }
C. { "doc": { "stock": "stock + 10" } }
D. { "script": { "source": "ctx._source.stock += params.count", "params": { "count": 10 } } }

Solution

  1. Step 1: Understand increment operation in partial update

    To increase a numeric field, use a script that adds the value to the existing field.
  2. Step 2: Identify correct syntax for scripted update

    { "script": { "source": "ctx._source.stock += params.count", "params": { "count": 10 } } } uses the 'script' key with source code to add 10 to 'stock'.
  3. Final Answer:

    { "script": { "source": "ctx._source.stock += params.count", "params": { "count": 10 } } } -> Option D
  4. Quick Check:

    Use script to increment numeric fields [OK]
Hint: Use script with ctx._source to increment fields [OK]
Common Mistakes:
  • Trying to update with doc key using expression string
  • Using 'update' key instead of 'doc' or 'script'
  • Assigning value directly instead of incrementing
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