📖 Scenario: You are working with a collection of books stored in Elasticsearch. Each book has a title, author, and year of publication.You want to find a way to get the books sorted by their publication year, so you can see the newest books first.
🎯 Goal: Build an Elasticsearch query that sorts the books by their year field in descending order.
📋 What You'll Learn
Create an Elasticsearch query with a match_all query to get all books
Add a sort section to sort by the year field in descending order
Use the exact field name year for sorting
Print the final JSON query
💡 Why This Matters
🌍 Real World
Sorting search results is common in websites and apps to show newest, cheapest, or most relevant items first.
💼 Career
Knowing how to sort results in Elasticsearch is useful for backend developers, data engineers, and anyone working with search engines.
Progress0 / 4 steps
1
Create the base Elasticsearch query
Create a variable called query and assign it a JSON object with a query key containing a match_all query.
Elasticsearch
Hint
The match_all query returns all documents.
2
Add sorting configuration
Add a sort key to the query dictionary. Set it to a list with one object that sorts by the year field in descending order using {"year": "desc"}.
Elasticsearch
Hint
The sort key takes a list of fields to sort by.
3
Use the query in a search request
Create a variable called search_request and assign it the query dictionary. This simulates preparing the search request with sorting.
Elasticsearch
Hint
Assign the query to a variable to represent the search request.
4
Print the final sorted query
Print the search_request variable to display the final Elasticsearch query with sorting.
Elasticsearch
Hint
Use print(search_request) to show the query.
Practice
(1/5)
1. What does the sort parameter do in an Elasticsearch query?
easy
A. It arranges the search results in a specified order.
B. It filters the search results based on a condition.
C. It changes the index mapping settings.
D. It deletes documents from the index.
Solution
Step 1: Understand the purpose of sort
The sort parameter is used to order search results by a field in ascending or descending order.
Step 2: Differentiate from other parameters
Filtering narrows results, mapping changes structure, and deleting removes data, none of which are sorting.
Final Answer:
It arranges the search results in a specified order. -> Option A
Quick Check:
Sorting = arranging results [OK]
Hint: Sort means order your results by a field [OK]
Common Mistakes:
Confusing sorting with filtering
Thinking sort deletes or changes data
Mixing sort with index settings
2. Which of the following is the correct syntax to sort results by the field price in descending order?
easy
A. "sort": [{"price": "desc"}]
B. "sort": {"price": "descending"}
C. "sort": ["price:desc"]
D. "sort": [{"price": "down"}]
Solution
Step 1: Check Elasticsearch sort syntax
Sorting uses an array of objects with field name and order as "asc" or "desc" strings.
Step 2: Validate each option
"sort": [{"price": "desc"}] uses correct JSON array and "desc" keyword. Others use invalid keywords or formats.
Final Answer:
"sort": [{"price": "desc"}] -> Option A
Quick Check:
Correct syntax uses array and "desc" [OK]
Hint: Use array with field and "asc" or "desc" strings [OK]
Common Mistakes:
Using wrong keywords like "descending" or "down"
Not using an array for sort
Incorrect JSON object structure
3. Given this Elasticsearch query snippet, what is the order of the returned documents by age?
{
"sort": [{"age": "asc"}]
}
medium
A. Documents are sorted from oldest to youngest.
B. Documents are sorted alphabetically by age.
C. Documents are sorted randomly.
D. Documents are sorted from youngest to oldest.
Solution
Step 1: Understand the meaning of "asc" in sorting
"asc" means ascending order, so smaller values come first.
Step 2: Apply to the field "age"
Sorting by age ascending means documents with lower age values appear before higher ones.
Final Answer:
Documents are sorted from youngest to oldest. -> Option D
Quick Check:
"asc" = ascending = smallest to largest [OK]
Hint: "asc" means smallest to largest values [OK]
Common Mistakes:
Confusing "asc" with descending order
Thinking sorting is random
Assuming alphabetical sort on numbers
4. Identify the error in this Elasticsearch sort snippet:
{
"sort": {"date": "asc"}
}
medium
A. Sort cannot be used with date fields.
B. Sort must be an array, not a single object.
C. Field name "date" must be inside quotes.
D. The order "asc" is invalid; should be "ascending".
Solution
Step 1: Check the required structure for sort
Sort expects an array of objects, even if sorting by one field.
Step 2: Analyze the given snippet
The snippet uses an object directly, missing the array brackets [].
Final Answer:
Sort must be an array, not a single object. -> Option B
Quick Check:
Sort = array of objects [OK]
Hint: Sort always uses an array, even for one field [OK]
Common Mistakes:
Using object instead of array for sort
Wrong order keywords like "ascending"
Thinking sort can't be used on dates
5. You want to sort search results first by category alphabetically ascending, then by price descending. Which is the correct sort clause?
hard
A. "sort": {"category": "asc", "price": "desc"}
B. "sort": [{"price": "desc"}, {"category": "asc"}]
C. "sort": [{"category": "asc"}, {"price": "desc"}]
D. "sort": [{"category": "desc"}, {"price": "asc"}]
Solution
Step 1: Understand multi-level sorting order
Sorting applies fields in order: first field sorts primary, second field breaks ties.
Step 2: Match required order
First by category ascending, then by price descending means category asc first, price desc second.
Step 3: Validate syntax
Sort must be an array of objects with field and order pairs.
Final Answer:
"sort": [{"category": "asc"}, {"price": "desc"}] -> Option C
Quick Check:
Primary asc category, secondary desc price [OK]
Hint: List sort fields in order inside array [OK]
Common Mistakes:
Reversing sort order of fields
Using object instead of array for multiple fields
Mixing ascending and descending incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.