Document IDs help find and update data quickly in Elasticsearch. You can let Elasticsearch create them automatically or set your own IDs.
Document ID strategies (auto vs manual) in Elasticsearch
POST /index_name/_doc
{
"field": "value"
}
POST /index_name/_doc/document_id
{
"field": "value"
}Without specifying an ID, Elasticsearch creates one automatically.
To set your own ID, add it after the index and _doc in the URL.
POST /products/_doc
{
"name": "Coffee Mug",
"price": 12.99
}POST /products/_doc/12345 { "name": "Tea Cup", "price": 9.99 }
GET /products/_doc/12345This example adds two books to the 'library' index. The first book gets an automatic ID. The second book uses a manual ID 'book-001'. Then it retrieves the second book by its manual ID.
POST /library/_doc
{
"title": "Elasticsearch Basics",
"author": "Jane Doe"
}
POST /library/_doc/book-001
{
"title": "Advanced Elasticsearch",
"author": "John Smith"
}
GET /library/_doc/book-001Manual IDs let you update or delete documents easily by ID.
Automatic IDs are good when you don't have a unique key and want Elasticsearch to handle uniqueness.
Using manual IDs incorrectly can cause overwriting documents if IDs repeat.
Document IDs identify each document uniquely in Elasticsearch.
You can let Elasticsearch create IDs automatically or set your own manual IDs.
Manual IDs help with updates and avoiding duplicates but require careful management.
Practice
Solution
Step 1: Understand automatic ID generation
Elasticsearch creates unique IDs automatically when you don't specify one.Step 2: Understand manual ID assignment
Users can assign their own IDs to documents for control and easier updates.Final Answer:
Automatic IDs are generated by Elasticsearch; manual IDs are set by the user. -> Option AQuick Check:
Auto = Elasticsearch generated, Manual = user set [OK]
- Confusing which side creates the ID
- Thinking automatic IDs are numeric only
- Believing manual IDs cannot be updated
Solution
Step 1: Identify the correct field for manual ID
Elasticsearch uses "_id" (with underscore) to specify manual document IDs.Step 2: Check the correct structure for indexing
The "body" key holds the document content; "doc" is used for updates, not indexing.Final Answer:
{ "index": "my_index", "_id": "123", "body": { "name": "Alice" } } -> Option AQuick Check:
Manual ID uses "_id" and "body" for document [OK]
- Using "id" instead of "_id"
- Confusing "doc" with "body" for indexing
- Passing numeric ID without quotes
{ "index": "products", "_id": "p100", "body": { "name": "Pen", "price": 1.5 } }What happens if you send the same request again with updated price 1.8?
Solution
Step 1: Understand manual ID behavior on indexing
Using the same manual ID overwrites the existing document with that ID.Step 2: Check the effect of sending updated data
The document with ID "p100" will be updated to have price 1.8.Final Answer:
The existing document with ID "p100" is updated with the new price. -> Option BQuick Check:
Same manual ID means update existing document [OK]
- Thinking a new document is created with same ID
- Expecting an error on duplicate ID
- Assuming no change happens on reindex
{ "index": "users", "id": "u123", "body": { "name": "Bob" } }But the document was not saved with ID "u123". What is the likely problem?
Solution
Step 1: Check the ID field name
Elasticsearch requires "_id" (with underscore) to specify manual IDs, not "id".Step 2: Confirm impact of wrong field
Using "id" means Elasticsearch ignores it and generates an automatic ID instead.Final Answer:
The field "id" should be "_id" to set manual ID. -> Option CQuick Check:
Manual ID needs "_id", not "id" [OK]
- Using "id" instead of "_id"
- Assuming missing fields cause ID issues
- Thinking manual IDs are disallowed
Solution
Step 1: Understand duplicate prevention
Duplicates can be avoided by assigning manual IDs based on unique fields like email.Step 2: Compare with automatic ID approach
Automatic IDs are random and do not prevent duplicates because each document gets a new ID.Final Answer:
Use a manual ID based on a unique field like email to prevent duplicates. -> Option DQuick Check:
Manual unique IDs prevent duplicates, auto IDs do not [OK]
- Thinking auto IDs prevent duplicates
- Using random manual IDs unrelated to content
- Relying on timestamps instead of IDs
Ready to prove it?
Pass the test and this pattern moves unknown
