Bird
Raised Fist0
Elasticsearchquery~20 mins

Snapshot and restore in Elasticsearch - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Snapshot and Restore 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 snapshot creation request?

Given the following Elasticsearch snapshot creation request, what will be the response status if the repository exists and is accessible?

Elasticsearch
{
  "repository": "my_backup",
  "snapshot": "snapshot_1",
  "body": {
    "indices": "index1,index2",
    "ignore_unavailable": true,
    "include_global_state": false
  }
}
AAcknowledged: true, Snapshot created successfully
BError: Repository not found
CSnapshot creation failed due to missing indices
DTimeout error during snapshot creation
Attempts:
2 left
💡 Hint

Check if the repository exists and the indices are available.

Predict Output
intermediate
2:00remaining
What does this restore request do?

Consider this Elasticsearch restore request. What will be the effect on the cluster?

Elasticsearch
{
  "repository": "my_backup",
  "snapshot": "snapshot_1",
  "body": {
    "indices": "index1",
    "rename_pattern": "index(\\d+)",
    "rename_replacement": "restored_index$1",
    "include_global_state": false
  }
}
ARestores index1 as restored_index1 without changing cluster settings
BRestores all indices and overwrites cluster settings
CFails because rename_pattern is invalid
DRestores index1 but keeps the original name
Attempts:
2 left
💡 Hint

Look at the rename_pattern and rename_replacement fields.

🔧 Debug
advanced
2:00remaining
Why does this snapshot creation fail with a repository error?

Analyze the following snapshot creation request and identify the cause of the failure.

Elasticsearch
{
  "repository": "backup_repo",
  "snapshot": "snap_2024",
  "body": {
    "indices": "*",
    "ignore_unavailable": false
  }
}
Aignore_unavailable must be true when using '*' wildcard
BThe repository 'backup_repo' is not registered or accessible
CThe wildcard '*' is invalid for indices
DSnapshot name 'snap_2024' is invalid
Attempts:
2 left
💡 Hint

Check repository registration and accessibility.

Predict Output
advanced
2:00remaining
What is the output of this snapshot status request?

Given this request to check snapshot status, what will be the output if the snapshot is currently in progress?

Elasticsearch
GET /_snapshot/my_backup/snapshot_1/_status
A{"snapshots":[{"snapshot":"snapshot_1","state":"SUCCESS"}]}
B{"error":"Snapshot not found"}
C{"snapshots":[{"snapshot":"snapshot_1","state":"IN_PROGRESS"}]}
D{"snapshots":[]}
Attempts:
2 left
💡 Hint

Consider the snapshot lifecycle states.

🧠 Conceptual
expert
3:00remaining
Which option correctly describes the behavior of restoring snapshots with include_global_state set to true?

When restoring a snapshot with include_global_state set to true, what happens?

AGlobal state is ignored and only indices are restored
BOnly index data is restored; cluster settings remain unchanged
CRestoring fails if global state is included
DCluster settings, templates, and persistent metadata from the snapshot are restored, potentially overwriting current cluster state
Attempts:
2 left
💡 Hint

Think about what global state means in Elasticsearch snapshots.

Practice

(1/5)
1. What is the main purpose of taking a snapshot in Elasticsearch?
easy
A. To save a backup of your data for recovery later
B. To speed up search queries
C. To delete old indexes automatically
D. To create new indexes from templates

Solution

  1. Step 1: Understand snapshot purpose

    A snapshot in Elasticsearch is used to save a backup of your data at a point in time.
  2. Step 2: Compare options

    Options B, C, and D describe other Elasticsearch features, not snapshot backup.
  3. Final Answer:

    To save a backup of your data for recovery later -> Option A
  4. Quick Check:

    Snapshot = Backup [OK]
Hint: Snapshots save data backups for recovery [OK]
Common Mistakes:
  • Confusing snapshots with index templates
  • Thinking snapshots speed up searches
  • Assuming snapshots delete data
2. Which of the following is the correct syntax to create a snapshot repository in Elasticsearch?
easy
A. POST /_snapshot/my_backup {"type": "fs", "settings": {"location": "/mount/backups"}}
B. PUT /_snapshot/my_backup {"type": "fs", "settings": {"location": "/mount/backups"}}
C. GET /_snapshot/my_backup {"type": "fs", "settings": {"location": "/mount/backups"}}
D. DELETE /_snapshot/my_backup {"type": "fs", "settings": {"location": "/mount/backups"}}

Solution

  1. Step 1: Identify correct HTTP method for creating repository

    Creating a snapshot repository uses the PUT method to define or update it.
  2. Step 2: Check other methods

    POST is for creating snapshots, GET is for retrieving info, DELETE is for removing repositories.
  3. Final Answer:

    PUT /_snapshot/my_backup {"type": "fs", "settings": {"location": "/mount/backups"}} -> Option B
  4. Quick Check:

    Repository creation = PUT [OK]
Hint: Use PUT to create or update snapshot repositories [OK]
Common Mistakes:
  • Using POST instead of PUT for repository creation
  • Confusing GET with creation commands
  • Trying to delete instead of create repository
3. Given this snapshot restore request:
POST /_snapshot/my_backup/snapshot_1/_restore
{
  "indices": "index1,index2",
  "rename_pattern": "index(.*)",
  "rename_replacement": "restored_index$1"
}

What will be the name of the restored index originally named index2?
medium
A. restored_index2
B. restored_index_index2
C. index2
D. index_restored2

Solution

  1. Step 1: Understand rename_pattern and rename_replacement

    The pattern "index(.*)" captures the part after "index". The replacement "restored_index$1" adds "restored_index" plus the captured part.
  2. Step 2: Apply to index2

    For "index2", the captured part is "2", so the new name is "restored_index2".
  3. Final Answer:

    restored_index2 -> Option A
  4. Quick Check:

    Rename pattern + replacement = restored_index2 [OK]
Hint: Captured group $1 appends after renamed prefix [OK]
Common Mistakes:
  • Ignoring rename_pattern and keeping original name
  • Adding extra 'index' in the replacement
  • Misplacing the captured group in new name
4. You try to restore a snapshot but get an error: repository_missing_exception. What is the most likely cause?
medium
A. The snapshot name is incorrect
B. The cluster is running an incompatible Elasticsearch version
C. The snapshot repository does not exist or is not registered
D. The indices in the snapshot are corrupted

Solution

  1. Step 1: Understand repository_missing_exception meaning

    This error means Elasticsearch cannot find the snapshot repository to access snapshots.
  2. Step 2: Check other options

    Snapshot name errors cause different exceptions; corrupted indices cause restore failures but not repository missing; version mismatch causes other errors.
  3. Final Answer:

    The snapshot repository does not exist or is not registered -> Option C
  4. Quick Check:

    repository_missing_exception = missing repository [OK]
Hint: Check repository registration if repository_missing_exception occurs [OK]
Common Mistakes:
  • Assuming snapshot name typo causes repository_missing_exception
  • Blaming corrupted indices for repository errors
  • Ignoring repository setup before restore
5. You want to restore only specific indexes from a snapshot but rename them to avoid conflicts. Which JSON snippet correctly does this during restore?
{
  "indices": "logs-2023,metrics-2023",
  "rename_pattern": "(.*)-2023",
  "rename_replacement": "$1-restore"
}
hard
A. Restores only logs-restore and metrics-restore indexes from snapshot
B. Restores logs-2023 and metrics-2023 with original names
C. Restores all indexes in snapshot renamed with -restore suffix
D. Restores logs-2023 and metrics-2023 as logs-restore and metrics-restore

Solution

  1. Step 1: Analyze indices and rename_pattern

    Indices "logs-2023" and "metrics-2023" match the pattern "(.*)-2023" capturing "logs" and "metrics".
  2. Step 2: Apply rename_replacement

    Replacement "$1-restore" changes names to "logs-restore" and "metrics-restore".
  3. Step 3: Confirm only specified indices restored

    Only indices listed in "indices" are restored, renamed as specified.
  4. Final Answer:

    Restores logs-2023 and metrics-2023 as logs-restore and metrics-restore -> Option D
  5. Quick Check:

    Indices filtered + renamed correctly = Restores logs-2023 and metrics-2023 as logs-restore and metrics-restore [OK]
Hint: Use indices + rename_pattern/replacement to rename on restore [OK]
Common Mistakes:
  • Restoring all snapshot indices ignoring filter
  • Not using rename_pattern correctly
  • Expecting renamed indexes to exist before restore