We use document ID to quickly find one exact item in Elasticsearch. It is like looking up a book by its unique code in a library.
Retrieving a document by ID in Elasticsearch
GET /index_name/_doc/document_id
Replace index_name with your index's name.
Replace document_id with the ID of the document you want to retrieve.
GET /users/_doc/123GET /products/_doc/abc-456
GET /orders/_doc/999 # What if the document does not exist? # Elasticsearch returns a response with "found": false.
This example first adds a document with ID '1' to the 'library' index. Then it retrieves the document with ID '1'. Finally, it tries to get a document with ID '2' which does not exist.
POST /library/_doc/1 { "title": "Learn Elasticsearch", "author": "Jane Doe", "year": 2024 } GET /library/_doc/1 GET /library/_doc/2
Time complexity is very fast because Elasticsearch uses the document ID as a direct pointer.
Space complexity is minimal since no extra data structures are needed for retrieval.
A common mistake is using the wrong index name or ID, which causes the document not to be found.
Use this method when you know the exact ID. For searching by content, use search queries instead.
Retrieving by ID is the fastest way to get one exact document.
You must know the index and the document ID.
If the document is missing, Elasticsearch tells you with 'found': false.
Practice
Solution
Step 1: Understand retrieval methods
Retrieving by ID directly targets one document, making it the fastest method.Step 2: Compare with other methods
Search queries and scroll APIs scan multiple documents, which is slower than direct ID retrieval.Final Answer:
Retrieve the document by its ID using the GET API -> Option AQuick Check:
Fastest retrieval = GET by ID [OK]
- Thinking search queries are faster than direct ID retrieval
- Using scroll API for single document retrieval
- Confusing aggregation with document retrieval
Solution
Step 1: Recall the GET by ID syntax
The correct syntax uses GET with the index and document ID: GET /index/_doc/123Step 2: Identify incorrect options
GET /index/_search {"query": {"term": {"_id": "123"}}} uses a search query, not direct GET by ID. POST /index/_doc/123/_get uses POST and an invalid path. GET /index/_search/123 has an invalid URL structure.Final Answer:
GET /index/_doc/123 -> Option AQuick Check:
Correct syntax = GET /index/_doc/ID [OK]
- Using search API instead of GET by ID
- Wrong HTTP method like POST
- Incorrect URL path structure
GET /products/_doc/abc123
Solution
Step 1: Understand the GET by ID response
If the document exists, Elasticsearch returns found: true with the document source.Step 2: Match the response format
{"_index":"products","_id":"abc123","found":true,"_source":{"name":"Laptop","price":1200}} shows found: true and the document data, which matches expected output.Final Answer:
{"_index":"products","_id":"abc123","found":true,"_source":{"name":"Laptop","price":1200}} -> Option CQuick Check:
Document exists = found: true with _source [OK]
- Expecting HTTP 404 instead of found: false
- Confusing error message with standard response
- Ignoring the _source field in response
GET /store/_docWhat is the problem and how to fix it?
Solution
Step 1: Identify the request format
The GET by ID request requires the document ID after _doc in the URL.Step 2: Fix the URL
Add the document ID after _doc, e.g., GET /store/_doc/123Final Answer:
Missing document ID in URL; add the ID after _doc -> Option DQuick Check:
GET by ID needs document ID in URL [OK]
- Omitting document ID in GET request URL
- Using wrong HTTP method
- Misnaming the index with underscore
Solution
Step 1: Understand GET by ID response behavior
GET by ID returns a JSON with 'found': false if the document is missing, no error thrown.Step 2: Compare with other methods
Search queries return hits but are slower; catching HTTP 404 is unnecessary; scroll API is for multiple docs.Final Answer:
Use GET /index/_doc/id and check if 'found' is true in the response -> Option BQuick Check:
Check 'found' field to detect missing document [OK]
- Expecting HTTP 404 error for missing documents
- Using search queries instead of GET by ID
- Using scroll API for single document retrieval
Ready to prove it?
Pass the test and this pattern moves unknown
