📖 Scenario: You work at a company that stores product information in Elasticsearch. You need to add new products to the Elasticsearch index so they can be searched later.
🎯 Goal: Learn how to index a document in Elasticsearch using the POST and PUT methods.
📋 What You'll Learn
Create a JSON document representing a product with specific fields
Set the index name in a variable
Use the POST method to add a new product document without specifying an ID
Use the PUT method to add a product document with a specific ID
Print the JSON response from Elasticsearch
💡 Why This Matters
🌍 Real World
Indexing documents is how search engines like Elasticsearch store data so users can find it quickly.
💼 Career
Knowing how to add and update documents in Elasticsearch is essential for backend developers and data engineers working with search and analytics.
Progress0 / 4 steps
1
Create the product document
Create a JSON object called product with these exact fields and values: "name": "Wireless Mouse", "price": 25.99, "in_stock": true.
Elasticsearch
Hint
Use Python dictionary syntax to create the product object.
2
Set the index name
Create a variable called index_name and set it to the string "products".
Elasticsearch
Hint
Assign the string "products" to the variable index_name.
3
Index the product using POST
Use the requests library to send a POST request to http://localhost:9200/{index_name}/_doc with the product JSON as the body. Store the response in a variable called response_post. Use json=product in the request.
Elasticsearch
Hint
Use requests.post with the URL and json=product to send the data.
4
Index the product using PUT with ID and print response
Send a PUT request to http://localhost:9200/{index_name}/_doc/1001 with the product JSON as the body. Store the response in response_put. Then print the JSON response from response_put using print(response_put.json()).
Elasticsearch
Hint
Use requests.put with the URL including 1001 as the document ID. Then print the JSON response.
Practice
(1/5)
1. What is the main difference between using POST and PUT when indexing a document in Elasticsearch?
easy
A. POST adds a document with an auto-generated ID, PUT adds or replaces a document with a specified ID.
B. POST deletes a document, PUT updates a document.
C. POST is used only for searching, PUT is used for indexing.
D. POST requires an ID, PUT never requires an ID.
Solution
Step 1: Understand POST behavior
POST indexes a document and Elasticsearch generates a unique ID automatically.
Step 2: Understand PUT behavior
PUT indexes a document with the ID you specify, replacing any existing document with that ID.
Final Answer:
POST adds a document with an auto-generated ID, PUT adds or replaces a document with a specified ID. -> Option A
Quick Check:
Method difference = auto ID vs specified ID [OK]
Hint: Remember: POST auto-IDs, PUT needs your ID [OK]
Common Mistakes:
Thinking POST deletes documents
Confusing PUT with search operation
Assuming PUT never requires an ID
2. Which of the following is the correct syntax to index a document with ID "123" using PUT in Elasticsearch?
easy
A. POST /index/_doc {"field": "value"}
B. POST /index/_doc/123 {"field": "value"}
C. PUT /index/_doc {"field": "value"}
D. PUT /index/_doc/123 {"field": "value"}
Solution
Step 1: Identify correct HTTP method and URL
To specify an ID, use PUT with the URL including the ID: /index/_doc/123.
Step 2: Confirm request body format
The body contains the document fields as JSON, e.g., {"field": "value"}.
Final Answer:
PUT /index/_doc/123 {"field": "value"} -> Option D
Quick Check:
PUT + ID in URL = correct syntax [OK]
Hint: PUT with ID in URL, POST without ID [OK]
Common Mistakes:
Using POST with an ID in URL
Omitting the ID when using PUT
Confusing URL structure
3. Given this request to index a document:
POST /products/_doc
{
"name": "Coffee Mug",
"price": 12.99
}
What will Elasticsearch do after this request?
medium
A. Index the document with an auto-generated ID under the 'products' index.
B. Replace any existing document with ID 'products'.
C. Return an error because ID is missing.
D. Create a new index named '_doc'.
Solution
Step 1: Analyze the HTTP method and URL
The request uses POST on /products/_doc, which means index 'products' and type '_doc'.
Step 2: Understand ID assignment
Since no ID is specified, Elasticsearch generates a unique ID automatically and indexes the document.
Final Answer:
Index the document with an auto-generated ID under the 'products' index. -> Option A
Quick Check:
POST without ID = auto-generated ID [OK]
Hint: POST without ID means auto ID assigned [OK]
Common Mistakes:
Thinking missing ID causes error
Assuming document replaces existing one
Confusing index and type names
4. You tried to index a document with PUT /myindex/_doc without specifying an ID. What is the problem with this request?
medium
A. It will create a document with a random ID.
B. It will update all documents in the index.
C. It will cause a syntax error because ID is missing in the URL.
D. It will delete the entire index.
Solution
Step 1: Check the HTTP method and URL requirements
PUT requires an explicit document ID in the URL to index or replace a document.
Step 2: Identify the error cause
Since the ID is missing, Elasticsearch will reject the request with an error due to invalid URL syntax.
Final Answer:
It will cause a syntax error because ID is missing in the URL. -> Option C
Quick Check:
PUT needs ID in URL [OK]
Hint: PUT without ID in URL causes error [OK]
Common Mistakes:
Assuming PUT auto-generates ID
Thinking it deletes index
Believing it updates all documents
5. You want to update a document if it exists or create it if it doesn't, using ID "789" in index "users". Which is the best way to do this in Elasticsearch?
hard
A. Use POST /users/_doc with the document body {"id": "789"}.
B. Use PUT /users/_doc/789 with the document body.
C. Use POST /users/_doc without ID.
D. Use DELETE /users/_doc/789 then POST /users/_doc.
Solution
Step 1: Understand update or create behavior
PUT with a specified ID will create the document if missing or replace it if it exists.
Step 2: Compare options
POST without ID creates new documents with auto IDs, so it won't update by ID. Deleting then posting is inefficient.
Final Answer:
Use PUT /users/_doc/789 with the document body. -> Option B
Quick Check:
PUT with ID updates or creates [OK]
Hint: PUT with ID updates or creates document [OK]
Common Mistakes:
Specifying ID in the document body
Omitting ID when update needed
Deleting before posting wastes resources
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.