Bird
Raised Fist0
Elasticsearchquery~5 mins

Highlighting matched text in Elasticsearch

Choose your learning style10 modes available
Introduction

Highlighting matched text helps you see exactly where your search words appear in results. It makes reading easier and faster.

You want to show users which parts of a document matched their search.
You need to emphasize keywords in search results on a website.
You want to improve user experience by making search hits clear.
You are building a search interface that shows snippets with highlighted terms.
Syntax
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.

Examples
Highlight matches of the word "apple" in the content field.
Elasticsearch
{
  "query": {
    "match": {
      "content": "apple"
    }
  },
  "highlight": {
    "fields": {
      "content": {}
    }
  }
}
Highlight matches in the title field using custom HTML tags <em> and </em>.
Elasticsearch
{
  "query": {
    "match": {
      "title": "Elasticsearch"
    }
  },
  "highlight": {
    "fields": {
      "title": {
        "pre_tags": ["<em>"],
        "post_tags": ["</em>"]
      }
    }
  }
}
Highlight matches in both title and content fields for a multi-field search.
Elasticsearch
{
  "query": {
    "multi_match": {
      "query": "search text",
      "fields": ["title", "content"]
    }
  },
  "highlight": {
    "fields": {
      "title": {},
      "content": {}
    }
  }
}
Sample Program

This query searches for "quick brown fox" in the description field and highlights the matched words in the results.

Elasticsearch
{
  "query": {
    "match": {
      "description": "quick brown fox"
    }
  },
  "highlight": {
    "fields": {
      "description": {}
    }
  }
}
OutputSuccess
Important Notes

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.

Summary

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

(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