Highlighting matched text helps you see exactly where your search words appear in results. It makes reading easier and faster.
Highlighting matched text in Elasticsearch
{
"query": {
"match": {
"field_name": "search text"
}
},
"highlight": {
"fields": {
"field_name": {}
}
}
}The highlight section tells Elasticsearch to mark matched words.
You specify which fields to highlight inside fields.
content field.{
"query": {
"match": {
"content": "apple"
}
},
"highlight": {
"fields": {
"content": {}
}
}
}title field using custom HTML tags <em> and </em>.{
"query": {
"match": {
"title": "Elasticsearch"
}
},
"highlight": {
"fields": {
"title": {
"pre_tags": ["<em>"],
"post_tags": ["</em>"]
}
}
}
}title and content fields for a multi-field search.{
"query": {
"multi_match": {
"query": "search text",
"fields": ["title", "content"]
}
},
"highlight": {
"fields": {
"title": {},
"content": {}
}
}
}This query searches for "quick brown fox" in the description field and highlights the matched words in the results.
{
"query": {
"match": {
"description": "quick brown fox"
}
},
"highlight": {
"fields": {
"description": {}
}
}
}Highlighting adds extra data to your search results under the highlight key.
You can customize the tags used to wrap matched text with pre_tags and post_tags.
Highlighting can slow down search performance if used on large fields or many fields.
Highlighting shows matched words clearly in search results.
Use the highlight section in your query to enable it.
You can highlight one or more fields and customize the highlight tags.
Practice
highlight section in an Elasticsearch query?Solution
Step 1: Understand the role of highlighting
Highlighting is used to emphasize matched words in search results so users can see why a document matched.Step 2: Compare with other query parts
Sorting, filtering, and updating are different functions not related to highlighting matched text.Final Answer:
To show matched words clearly in search results -> Option DQuick Check:
Highlight = show matched words [OK]
- Confusing highlight with sorting or filtering
- Thinking highlight updates documents
- Assuming highlight changes search relevance
content in an Elasticsearch query?Solution
Step 1: Recall correct highlight syntax
The correct syntax uses "highlight" with "fields" as an object mapping field names to options, like {"content": {}}.Step 2: Check each option
"highlight": {"fields": {"content": {}}} matches the correct structure. Options B, C, and D use incorrect keys or data types.Final Answer:
"highlight": {"fields": {"content": {}}} -> Option AQuick Check:
Highlight fields syntax = "highlight": {"fields": {"content": {}}} [OK]
- Using "field" instead of "fields"
- Putting fields inside an array instead of object
- Misplacing keys inside highlight
highlight section return for a match in the title field?
{
"query": {"match": {"title": "quick fox"}},
"highlight": {"fields": {"title": {}}}
}Solution
Step 1: Understand default highlight behavior
When highlight is enabled with empty options, Elasticsearch wraps matched words with default tags like <em> and </em>.Step 2: Analyze the query
The query matches both "quick" and "fox" in the title, so both words will be highlighted.Final Answer:
The matched words "quick" and "fox" wrapped in default highlight tags -> Option CQuick Check:
Default highlight tags wrap matched words [OK]
- Thinking highlight needs custom tags to work
- Assuming only first matched word is highlighted
- Believing missing tags cause errors
{
"query": {"match": {"description": "fast car"}},
"highlight": {"fields": ["description"]}
}Solution
Step 1: Check highlight fields syntax
The "fields" key must be an object mapping field names to options, not an array.Step 2: Verify other parts
"match" query is valid, "highlight" is correctly placed, and any field can be highlighted if indexed.Final Answer:
"fields" should be an object, not an array -> Option BQuick Check:
Highlight fields = object, not array [OK]
- Using array instead of object for fields
- Placing highlight inside query incorrectly
- Assuming some fields can't be highlighted
title and content fields with custom tags <strong> and </strong>. Which is the correct highlight section to achieve this?Solution
Step 1: Understand how to set custom tags
Custom tags are set globally using "pre_tags" and "post_tags" arrays outside the fields object.Step 2: Check each option's structure
"highlight": {"fields": {"title": {}, "content": {}}, "pre_tags": [""], "post_tags": [""]} correctly sets "fields" as an object and uses "pre_tags" and "post_tags" arrays. Options B, C, and D misuse keys or data types.Final Answer:
"highlight": {"fields": {"title": {}, "content": {}}, "pre_tags": [""], "post_tags": [""]} -> Option AQuick Check:
Custom tags use pre_tags/post_tags arrays [OK]
- Using arrays for fields instead of objects
- Setting tags inside each field incorrectly
- Using single strings instead of arrays for tags
Ready to prove it?
Pass the test and this pattern moves unknown
