Discover how a simple query can save you hours of searching through data!
Why Term query in Elasticsearch? - Purpose & Use Cases
Imagine you have a huge list of documents and you want to find all documents that exactly match a specific word or value, like finding all emails from a certain sender.
Manually scanning each document to check if it contains the exact word is slow and tiring. It's easy to miss matches or get wrong results if you don't check carefully.
The term query lets Elasticsearch quickly find documents that contain the exact word or value you want. It's like having a super-fast librarian who knows exactly where every word is.
{ "query": { "match": { "sender": "john@example.com" } } }{ "query": { "term": { "sender": "john@example.com" } } }It enables lightning-fast, precise searches for exact values in huge collections of data.
Finding all customer orders where the status is exactly "shipped" without mixing in orders with similar words like "shipping" or "ship".
Manually searching exact matches is slow and error-prone.
Term query finds exact values quickly and accurately.
It makes searching large datasets efficient and reliable.
Practice
term query in Elasticsearch do?Solution
Step 1: Understand the purpose of term query
A term query searches for exact matches without analyzing the search term.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.Final Answer:
Finds exact matches of the given term in the data -> Option BQuick Check:
Term query = exact match [OK]
- Confusing term query with match query that analyzes text
- Thinking term query sorts results
- Assuming term query finds similar or partial matches
Solution
Step 1: Identify correct term query syntax
The term query uses the key "term" with a field and exact value.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.Final Answer:
{ "term": { "user": "kimchy" } } -> Option DQuick Check:
Term query syntax = { "term": { "user": "kimchy" } } [OK]
- Using "match" instead of "term" for exact match
- Confusing "term" with "terms" for single value
- Adding extra keys like "term_query" which is invalid
{ "query": { "term": { "status": "active" } } }What documents will this query return?
Solution
Step 1: Understand term query behavior on field
The term query matches documents where the field value exactly equals the given term without analysis.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.Final Answer:
Documents where the status field exactly equals "active" -> Option AQuick Check:
Term query = exact field value match [OK]
- Thinking term query matches partial or analyzed text
- Assuming term query matches prefixes or substrings
- Confusing term query with match query behavior
{ "query": { "term": { "user": "Kimchy" } } }Your data has the user field stored as lowercase "kimchy". What is the problem?
Solution
Step 1: Understand term query case sensitivity
Term query matches exact terms and is case sensitive, so "Kimchy" does not match "kimchy".Step 2: Check other options
Syntax is correct, field exists, and term query does not analyze or change case.Final Answer:
Term query is case sensitive and "Kimchy" does not match "kimchy" -> Option AQuick Check:
Term query = exact case match [OK]
- Assuming term query ignores case
- Thinking syntax error causes no results
- Believing term query analyzes or lowercases terms
tags field contains exactly the term urgent. The tags field is an array of keywords. Which query is best to use?Solution
Step 1: Understand term query on array fields
Term query matches exact terms in arrays, so it works directly on thetagsfield.Step 2: Evaluate other options
Match query analyzes text (not exact). Terms query expects multiple values to match any. Usingtags.keywordis unnecessary iftagsis keyword type.Final Answer:
{ "term": { "tags": "urgent" } } -> Option CQuick Check:
Term query matches exact term in array [OK]
- Using match query which analyzes and may not match exactly
- Using terms query incorrectly for single term
- Confusing field type and using .keyword unnecessarily
Ready to prove it?
Pass the test and this pattern moves unknown
