Term-Level Queries in Elasticsearch
Introduction to Term-Level Queries
In Elasticsearch, Term-Level Queries are used to find documents that contain exact terms in a specified field. Unlike Full-Text Queries, which analyze the query text to determine the search terms, Term-Level Queries operate on exact terms and are typically used for structured data.
Common Term-Level Queries
Some common term-level queries include:
- Term Query: Finds documents that contain the exact term specified.
- Terms Query: Finds documents that contain any of the exact terms specified.
- Range Query: Finds documents where field values are within a specified range.
- Exists Query: Finds documents that contain a specified field.
- Prefix Query: Finds documents that contain terms with a specified prefix.
- Wildcard Query: Finds documents that contain terms matching a pattern.
- Regexp Query: Finds documents that contain terms matching a regular expression.
- Fuzzy Query: Finds documents that contain terms similar to the specified term.
Term Query
The Term Query finds documents that contain the exact term specified in the inverted index. It is case-sensitive and does not analyze the input.
{ "query": { "term": { "status": { "value": "active" } } } }
This query will find documents where the status
field exactly matches the term active
.
Terms Query
The Terms Query finds documents that match any of the exact terms specified in the query.
{ "query": { "terms": { "status": ["active", "pending"] } } }
This query will find documents where the status
field matches either active
or pending
.
Range Query
The Range Query finds documents where the field values are within a specified range.
{ "query": { "range": { "age": { "gte": 30, "lte": 40 } } } }
This query will find documents where the age
field is between 30 and 40, inclusive.
Exists Query
The Exists Query finds documents that contain a specified field.
{ "query": { "exists": { "field": "email" } } }
This query will find documents that have the email
field.
Prefix Query
The Prefix Query finds documents that contain terms with a specified prefix.
{ "query": { "prefix": { "username": { "value": "user" } } } }
This query will find documents where the username
field starts with the prefix user
.
Wildcard Query
The Wildcard Query finds documents that contain terms matching a specified pattern. It supports *
to match any character sequence and ?
to match any single character.
{ "query": { "wildcard": { "username": { "value": "user*" } } } }
This query will find documents where the username
field matches the pattern user*
.
Regexp Query
The Regexp Query finds documents that contain terms matching a specified regular expression.
{ "query": { "regexp": { "username": { "value": "user[0-9]+" } } } }
This query will find documents where the username
field matches the regular expression user[0-9]+
.
Fuzzy Query
The Fuzzy Query finds documents that contain terms similar to the specified term, using Levenshtein Edit Distance to match terms.
{ "query": { "fuzzy": { "username": { "value": "user", "fuzziness": "AUTO" } } } }
This query will find documents where the username
field is similar to the term user
.