Bird
Raised Fist0
Elasticsearchquery~10 mins

Term query in Elasticsearch - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Term query
Start: Receive Query
↓
Parse Term Query
↓
Search Exact Term in Index
↓
Match Documents Found?
No→Return Empty Result
Yes↓
Return Matching Documents
The term query searches for exact matches of a term in the index and returns documents containing that term.
Execution Sample
Elasticsearch
{
  "query": {
    "term": { "status": { "value": "active" } }
  }
}
This query finds documents where the field 'status' exactly matches the term 'active'.
Execution Table
StepActionInput/ConditionResult/Output
1Receive query{"term": {"status": {"value": "active"}}}Query parsed
2Parse term queryField: status, Term: activeReady to search exact term
3Search indexLook for documents with status = 'active'Documents with exact match found
4Check matchesAre there documents with status 'active'?Yes, matches found
5Return resultsMatching documentsDocuments with status 'active' returned
💡 Execution stops after returning matching documents or empty if none found
Variable Tracker
VariableStartAfter Step 2After Step 3Final
querynull{"term": {"status": {"value": "active"}}}{"term": {"status": {"value": "active"}}}Same
fieldnullstatusstatusstatus
termnullactiveactiveactive
matches_foundnullnulltruetrue
resultsnullnullnullDocuments with status 'active'
Key Moments - 2 Insights
Why does the term query not find documents if the term case or format differs?
Because term query looks for exact matches (see execution_table step 3), it does not analyze or change the term. So 'Active' is different from 'active'.
What happens if the field does not exist in some documents?
Those documents are ignored because the term query only matches documents where the field exists with the exact term (execution_table step 4).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the term being searched in step 2?
A"active"
B"status"
C"term"
D"query"
💡 Hint
Check the 'Input/Condition' column in step 2 of execution_table
At which step does the system confirm if matching documents exist?
AStep 1
BStep 3
CStep 4
DStep 5
💡 Hint
Look at the 'Action' column for checking matches in execution_table
If the term was changed to 'Active' (capital A), how would the results change?
ASame documents returned
BNo documents returned
CAll documents returned
DError occurs
💡 Hint
Recall that term query matches exact terms (see key_moments about case sensitivity)
Concept Snapshot
Term query syntax:
{
  "query": {
    "term": { "field": "value" }
  }
}

- Matches exact term in field
- Case sensitive and no analysis
- Returns documents with exact match
Full Transcript
The term query in Elasticsearch searches for documents containing an exact term in a specified field. It does not analyze or change the term, so the match must be exact including case. The process starts by receiving the query, parsing the term and field, searching the index for exact matches, checking if matches exist, and then returning the matching documents. If no matches are found, an empty result is returned. This query is useful when you want precise matching without text analysis.

Practice

(1/5)
1. What does a term query in Elasticsearch do?
easy
A. Analyzes and breaks the search term into tokens
B. Finds exact matches of the given term in the data
C. Finds documents with terms similar to the search term
D. Sorts documents based on the term frequency

Solution

  1. Step 1: Understand the purpose of term query

    A term query searches for exact matches without analyzing the search term.
  2. Step 2: Compare options with term query behavior

    Only Finds exact matches of the given term in the data describes exact matching, which is the core of term query.
  3. Final Answer:

    Finds exact matches of the given term in the data -> Option B
  4. Quick Check:

    Term query = exact match [OK]
Hint: Term query matches exactly, no analysis or tokenizing [OK]
Common Mistakes:
  • Confusing term query with match query that analyzes text
  • Thinking term query sorts results
  • Assuming term query finds similar or partial matches
2. Which of the following is the correct syntax for a term query in Elasticsearch?
easy
A. { "terms": { "user": ["kimchy"] } }
B. { "match": { "user": "kimchy" } }
C. { "term_query": { "user": "kimchy" } }
D. { "term": { "user": "kimchy" } }

Solution

  1. Step 1: Identify correct term query syntax

    The term query uses the key "term" with a field and exact value.
  2. Step 2: Check each option

    { "term": { "user": "kimchy" } } matches the correct syntax. { "match": { "user": "kimchy" } } is a match query, C is invalid, D is a terms query (plural) for multiple values.
  3. Final Answer:

    { "term": { "user": "kimchy" } } -> Option D
  4. Quick Check:

    Term query syntax = { "term": { "user": "kimchy" } } [OK]
Hint: Term query uses "term" key with field and exact value [OK]
Common Mistakes:
  • Using "match" instead of "term" for exact match
  • Confusing "term" with "terms" for single value
  • Adding extra keys like "term_query" which is invalid
3. Given this Elasticsearch query:
{ "query": { "term": { "status": "active" } } }

What documents will this query return?
medium
A. Documents where the status field exactly equals "active"
B. Documents where the status field contains the word "active" anywhere
C. Documents where the status field starts with "active"
D. Documents where the status field is analyzed and matches "active"

Solution

  1. Step 1: Understand term query behavior on field

    The term query matches documents where the field value exactly equals the given term without analysis.
  2. Step 2: Analyze each option

    Only Documents where the status field exactly equals "active" correctly describes exact equality. Others describe partial or analyzed matches which term query does not do.
  3. Final Answer:

    Documents where the status field exactly equals "active" -> Option A
  4. Quick Check:

    Term query = exact field value match [OK]
Hint: Term query matches exact field value only [OK]
Common Mistakes:
  • Thinking term query matches partial or analyzed text
  • Assuming term query matches prefixes or substrings
  • Confusing term query with match query behavior
4. You wrote this term query but it returns no results:
{ "query": { "term": { "user": "Kimchy" } } }

Your data has the user field stored as lowercase "kimchy". What is the problem?
medium
A. Term query is case sensitive and "Kimchy" does not match "kimchy"
B. The term query syntax is incorrect
C. The user field is missing in the documents
D. Term query analyzes the term and changes case

Solution

  1. Step 1: Understand term query case sensitivity

    Term query matches exact terms and is case sensitive, so "Kimchy" does not match "kimchy".
  2. Step 2: Check other options

    Syntax is correct, field exists, and term query does not analyze or change case.
  3. Final Answer:

    Term query is case sensitive and "Kimchy" does not match "kimchy" -> Option A
  4. Quick Check:

    Term query = exact case match [OK]
Hint: Term query matches exact case; check letter casing [OK]
Common Mistakes:
  • Assuming term query ignores case
  • Thinking syntax error causes no results
  • Believing term query analyzes or lowercases terms
5. You want to find documents where the tags field contains exactly the term urgent. The tags field is an array of keywords. Which query is best to use?
hard
A. { "match": { "tags": "urgent" } }
B. { "terms": { "tags": "urgent" } }
C. { "term": { "tags": "urgent" } }
D. { "term": { "tags.keyword": "urgent" } }

Solution

  1. Step 1: Understand term query on array fields

    Term query matches exact terms in arrays, so it works directly on the tags field.
  2. Step 2: Evaluate other options

    Match query analyzes text (not exact). Terms query expects multiple values to match any. Using tags.keyword is unnecessary if tags is keyword type.
  3. Final Answer:

    { "term": { "tags": "urgent" } } -> Option C
  4. Quick Check:

    Term query matches exact term in array [OK]
Hint: Use term query for exact keyword in array fields [OK]
Common Mistakes:
  • Using match query which analyzes and may not match exactly
  • Using terms query incorrectly for single term
  • Confusing field type and using .keyword unnecessarily
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