Bird
Raised Fist0
Elasticsearchquery~5 mins

Highlighting matched text in Elasticsearch - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Highlighting matched text
O(n)
Understanding Time Complexity

When we ask about time complexity for highlighting matched text in Elasticsearch, we want to know how the work grows as the data or query size grows.

Specifically, how does Elasticsearch spend more time when it finds and highlights matches in documents?

Scenario Under Consideration

Analyze the time complexity of the following Elasticsearch query with highlighting.


GET /my_index/_search
{
  "query": {
    "match": { "content": "search term" }
  },
  "highlight": {
    "fields": { "content": {} }
  }
}
    

This query searches for documents matching "search term" in the content field and highlights the matched parts in the results.

Identify Repeating Operations

Look at what repeats as the query runs:

  • Primary operation: Scanning each document's content to find matches and then marking matched text for highlighting.
  • How many times: Once for each document that matches the query and for each highlighted field in that document.
How Execution Grows With Input

As the number of matching documents grows, Elasticsearch must highlight more text snippets.

Input Size (n)Approx. Operations
10Highlighting in 10 documents
100Highlighting in 100 documents (about 10 times more work)
1000Highlighting in 1000 documents (about 100 times more work than 10)

Pattern observation: The work grows roughly in direct proportion to the number of matched documents because each document's text must be scanned and highlighted.

Final Time Complexity

Time Complexity: O(n)

This means the time to highlight matched text grows linearly with the number of documents matched by the query.

Common Mistake

[X] Wrong: "Highlighting happens instantly and does not add time as more documents match."

[OK] Correct: Highlighting requires scanning matched text in each document, so more matches mean more work and more time.

Interview Connect

Understanding how highlighting scales helps you explain performance trade-offs when searching and displaying results, a useful skill in real projects.

Self-Check

"What if we added highlighting on multiple fields instead of just one? How would the time complexity change?"

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