Understanding Relevance Score (_score) in Elasticsearch
📖 Scenario: You are building a simple search feature for a small online bookstore. You want to understand how Elasticsearch ranks search results using the _score field, which shows how relevant each book is to the search query.
🎯 Goal: Learn how to perform a basic search query in Elasticsearch and see how the _score helps rank the results by relevance.
📋 What You'll Learn
Create an Elasticsearch index with sample book data
Add a search query to find books by title
Retrieve and display the _score for each search result
Understand how _score affects the order of results
💡 Why This Matters
🌍 Real World
Search engines use relevance scores to show the most useful results first, like when you search for books, products, or articles online.
💼 Career
Understanding _score helps developers build better search features that give users the best matches quickly.
Progress0 / 4 steps
1
Create an Elasticsearch index with sample book data
Create an index called books and add these three documents with fields title and author: {"title": "Learn Elasticsearch", "author": "Alice"}, {"title": "Mastering Search", "author": "Bob"}, {"title": "Elasticsearch Basics", "author": "Charlie"}.
Elasticsearch
Hint
Use the PUT method to add documents to the books index with the exact titles and authors given.
2
Add a search query to find books by title
Create a search query that looks for the word Elasticsearch in the title field of the books index.
Elasticsearch
Hint
Use the GET method with _search and a match query on the title field.
3
Retrieve and display the _score for each search result
Modify the search query to include the _score field in the results and show it for each matching document.
Elasticsearch
Hint
Add "explain": true to the search request to see the _score details for each hit.
4
Print the search results with their relevance scores
Run the search query and print the title and _score of each hit in the results.
Elasticsearch
Hint
Look at the search response hits and print each hit's _source.title and _score.
Practice
(1/5)
1. What does the _score field represent in an Elasticsearch search result?
easy
A. The total number of documents in the index
B. The unique identifier of the document
C. The relevance score showing how well a document matches the query
D. The timestamp when the document was indexed
Solution
Step 1: Understand the purpose of _score
The _score is a numeric value assigned by Elasticsearch to each document based on how well it matches the search query.
Step 2: Differentiate _score from other fields
Unlike document ID or timestamps, _score specifically measures relevance, not identity or metadata.
Final Answer:
The relevance score showing how well a document matches the query -> Option C
Quick Check:
_score = relevance [OK]
Hint: Remember: _score means relevance, not ID or count [OK]
Common Mistakes:
Confusing _score with document ID
Thinking _score is a timestamp
Assuming _score counts documents
2. Which of the following is the correct way to access the _score in an Elasticsearch query response JSON?
Elasticsearch scores documents higher when query terms appear closer and in the same order in the field.
Step 2: Compare documents for term order and presence
Document 2 has "banana apple" which matches both terms but reversed order; Document 1 has "apple banana fruit" matching query order exactly; Document 4 has terms but with extra word; Document 3 misses "banana".
Step 3: Consider term frequency and order
Exact order and proximity increase score, so Document 1 scores highest because it matches "apple banana" exactly in order and proximity.
Final Answer:
Document 1 -> Option A
Quick Check:
Exact term order and proximity = highest _score [OK]
Hint: Exact term order and proximity boost _score [OK]
Common Mistakes:
Ignoring term order effect on score
Assuming all documents with terms score equally
Overlooking missing query terms in documents
4. You wrote this Elasticsearch query but all documents have _score equal to 1.0, which is unexpected:
{
"query": {
"match_all": {}
}
}
What is the likely reason for this behavior?
medium
A. The match_all query assigns a constant _score of 1.0 to all documents
B. The index is empty so _score defaults to 1.0
C. You forgot to specify the field in the query
D. The _score is not returned by default
Solution
Step 1: Understand match_all query behavior
The match_all query matches every document equally and assigns a default _score of 1.0 to all.
Step 2: Check if this matches the observed behavior
Since all documents have _score 1.0, it confirms match_all is working as designed.
Final Answer:
The match_all query assigns a constant _score of 1.0 to all documents -> Option A
Quick Check:
match_all = constant _score 1.0 [OK]
Hint: match_all always gives _score 1.0 [OK]
Common Mistakes:
Thinking _score varies with match_all
Assuming missing field causes this
Believing _score is not returned by default
5. You want to boost documents that contain the word "premium" in the description field to increase their _score. Which Elasticsearch query correctly applies a boost to achieve this?
B. Use a single match with boost inside the field object
C. Use match_all with boost parameter
D. Use term query without boost
Solution
Step 1: Understand boosting in Elasticsearch queries
Boosting is done by adding a boost parameter inside the query clause to increase _score for matching documents.
Step 2: Identify correct syntax for boosting
The correct way is to use a single match query with boost inside the field object, like { "match": { "description": { "query": "premium", "boost": 2 } } }.
Step 3: Evaluate given options
Use a single match with boost inside the field object matches this syntax; other options either lack boost or use wrong query types.
Final Answer:
Use a single match with boost inside the field object -> Option B
Quick Check:
Boost inside match field object increases _score [OK]
Hint: Put boost inside match field object for scoring [OK]
Common Mistakes:
Using multiple matches without boost
Applying boost to match_all query
Using term query without boost
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.