Bird
Raised Fist0
Elasticsearchquery~10 mins

Highlighting matched text in Elasticsearch - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Highlighting matched text
Send Search Query with Highlight
↓
Elasticsearch Matches Documents
↓
Highlight Matched Text in Fields
↓
Return Results with Highlighted Snippets
↓
Client Displays Highlighted Text
The search query is sent with highlight instructions, Elasticsearch finds matches, highlights matched text, and returns results with highlighted snippets.
Execution Sample
Elasticsearch
{
  "query": {
    "match": {"content": "apple"}
  },
  "highlight": {
    "fields": {"content": {}}
  }
}
This query searches for 'apple' in the 'content' field and highlights matched text in the results.
Execution Table
StepActionQuery PartResult/Effect
1Send search query{"match":{"content":"apple"},"highlight":{"fields":{"content":{}}}}Query received by Elasticsearch
2Match documentsmatch content: appleDocuments containing 'apple' found
3Highlight matched texthighlight fields: contentMatched 'apple' text wrapped with highlight tags
4Return resultsresults with highlightResults include original fields plus highlighted snippets
5Client displayshighlighted snippetsUser sees 'apple' highlighted in search results
💡 All matching documents processed and highlighted text returned to client
Variable Tracker
VariableStartAfter Step 2After Step 3Final
query{}{"match":{"content":"apple"}}{"match":{"content":"apple"},"highlight":{"fields":{"content":{}}}}Same query throughout
matched_docs[][doc1, doc2][doc1, doc2][doc1, doc2] with highlights
highlighted_textN/AN/A["<em>apple</em>"]["<em>apple</em>"]
Key Moments - 3 Insights
Why does the highlight only appear in the 'content' field?
Because the highlight section specifies only the 'content' field for highlighting, as shown in execution_table step 3.
What happens if no documents contain the word 'apple'?
No documents match in step 2, so no highlights are created or returned, ending the process early.
Does the original text change when highlighted?
No, the original text stays the same; highlight adds tags around matched words in the returned snippet only (step 3).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, at which step does Elasticsearch find documents containing 'apple'?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Check the 'Action' and 'Result/Effect' columns in execution_table row for Step 2
According to variable_tracker, what is the value of 'highlighted_text' after Step 3?
A[]
B["apple"]
C["<em>apple</em>"]
DN/A
💡 Hint
Look at the 'highlighted_text' row under 'After Step 3' in variable_tracker
If the highlight field was changed to 'title' instead of 'content', what would happen?
AHighlighting would appear in the 'title' field instead of 'content'
BHighlighting would appear in both 'title' and 'content'
CNo highlighting would appear
DQuery would fail
💡 Hint
Refer to execution_table step 3 where highlight fields are specified
Concept Snapshot
Highlighting matched text in Elasticsearch:
- Add 'highlight' section in query
- Specify fields to highlight
- Elasticsearch wraps matched terms with tags
- Results include highlighted snippets
- Client shows highlighted text to user
Full Transcript
This visual execution shows how Elasticsearch highlights matched text. First, a search query with a highlight section is sent. Elasticsearch finds documents matching the query term 'apple' in the 'content' field. Then it wraps the matched text with highlight tags like <em>. The results returned include these highlighted snippets. Finally, the client displays the highlighted text to the user. Variables like matched_docs and highlighted_text change as the query runs. Key points include that only specified fields are highlighted and original text is unchanged. The quiz checks understanding of steps and variable states.

Practice

(1/5)
1. What is the main purpose of the highlight section in an Elasticsearch query?
easy
A. To filter documents before searching
B. To sort the search results by relevance
C. To update documents in the index
D. To show matched words clearly in search results

Solution

  1. 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.
  2. Step 2: Compare with other query parts

    Sorting, filtering, and updating are different functions not related to highlighting matched text.
  3. Final Answer:

    To show matched words clearly in search results -> Option D
  4. Quick Check:

    Highlight = show matched words [OK]
Hint: Highlight section shows matched words in results [OK]
Common Mistakes:
  • Confusing highlight with sorting or filtering
  • Thinking highlight updates documents
  • Assuming highlight changes search relevance
2. Which of the following is the correct syntax to add highlighting for the field content in an Elasticsearch query?
easy
A. "highlight": {"fields": {"content": {}}}
B. "highlight": {"field": "content"}
C. "highlight": {"content": {"fields": {}}}
D. "highlight": {"fields": ["content"]}

Solution

  1. Step 1: Recall correct highlight syntax

    The correct syntax uses "highlight" with "fields" as an object mapping field names to options, like {"content": {}}.
  2. Step 2: Check each option

    "highlight": {"fields": {"content": {}}} matches the correct structure. Options B, C, and D use incorrect keys or data types.
  3. Final Answer:

    "highlight": {"fields": {"content": {}}} -> Option A
  4. Quick Check:

    Highlight fields syntax = "highlight": {"fields": {"content": {}}} [OK]
Hint: Use "highlight": {"fields": {"fieldname": {}}} [OK]
Common Mistakes:
  • Using "field" instead of "fields"
  • Putting fields inside an array instead of object
  • Misplacing keys inside highlight
3. Given this Elasticsearch query snippet, what will the highlight section return for a match in the title field?
{
  "query": {"match": {"title": "quick fox"}},
  "highlight": {"fields": {"title": {}}}
}
medium
A. An error because highlight requires custom tags
B. Only the word "quick" highlighted, "fox" ignored
C. The matched words "quick" and "fox" wrapped in default highlight tags
D. No highlighting because tags are missing

Solution

  1. Step 1: Understand default highlight behavior

    When highlight is enabled with empty options, Elasticsearch wraps matched words with default tags like <em> and </em>.
  2. Step 2: Analyze the query

    The query matches both "quick" and "fox" in the title, so both words will be highlighted.
  3. Final Answer:

    The matched words "quick" and "fox" wrapped in default highlight tags -> Option C
  4. Quick Check:

    Default highlight tags wrap matched words [OK]
Hint: Empty highlight options use default tags to wrap matches [OK]
Common Mistakes:
  • Thinking highlight needs custom tags to work
  • Assuming only first matched word is highlighted
  • Believing missing tags cause errors
4. Identify the error in this Elasticsearch highlight query snippet:
{
  "query": {"match": {"description": "fast car"}},
  "highlight": {"fields": ["description"]}
}
medium
A. "match" query is invalid for highlighting
B. "fields" should be an object, not an array
C. "highlight" must be inside "query"
D. "description" field cannot be highlighted

Solution

  1. Step 1: Check highlight fields syntax

    The "fields" key must be an object mapping field names to options, not an array.
  2. Step 2: Verify other parts

    "match" query is valid, "highlight" is correctly placed, and any field can be highlighted if indexed.
  3. Final Answer:

    "fields" should be an object, not an array -> Option B
  4. Quick Check:

    Highlight fields = object, not array [OK]
Hint: Highlight fields must be an object, not a list [OK]
Common Mistakes:
  • Using array instead of object for fields
  • Placing highlight inside query incorrectly
  • Assuming some fields can't be highlighted
5. You want to highlight matched text in both title and content fields with custom tags <strong> and </strong>. Which is the correct highlight section to achieve this?
hard
A. "highlight": {"fields": {"title": {}, "content": {}}, "pre_tags": [""], "post_tags": [""]}
B. "highlight": {"fields": ["title", "content"], "pre_tags": "", "post_tags": ""}
C. "highlight": {"fields": {"title": {"tags": ["", ""]}, "content": {"tags": ["", ""]}}}
D. "highlight": {"fields": {"title": {}, "content": {}}, "tags": ["", ""]}

Solution

  1. Step 1: Understand how to set custom tags

    Custom tags are set globally using "pre_tags" and "post_tags" arrays outside the fields object.
  2. 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.
  3. Final Answer:

    "highlight": {"fields": {"title": {}, "content": {}}, "pre_tags": [""], "post_tags": [""]} -> Option A
  4. Quick Check:

    Custom tags use pre_tags/post_tags arrays [OK]
Hint: Use pre_tags/post_tags arrays for custom highlight tags [OK]
Common Mistakes:
  • Using arrays for fields instead of objects
  • Setting tags inside each field incorrectly
  • Using single strings instead of arrays for tags
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard