Elasticsearch Elasticsearch Exact Match

By Opster Team

Updated: Jun 22, 2023

| 2 min read

Before you dig into the details of this technical guide, have you tried asking OpsGPT?

You'll receive concise answers that will help streamline your Elasticsearch/OpenSearch operations.


Try OpsGPT now for step-by-step guidance and tailored insights into your Elasticsearch/ OpenSearch operation.

Aside from reading this guide, we recommend you try running the Elasticsearch Error Check-Up which analyzes 2 JSON files to detect many configuration errors.

To easily resolve issues in your deployment and locate their root cause, try AutoOps for Elasticsearch. It diagnoses problems by analyzing hundreds of metrics collected by a lightweight agent and offers guidance for resolving them.

Introduction

When querying Elasticsearch, it’s often necessary to perform exact match searches to retrieve specific documents that match a given criterion. In this article, we will discuss various techniques and best practices for exact match searches in Elasticsearch. If you want to learn about Elasticsearch match, multi-match, and match phrase queries, check out this guide. You should also take a look at this guide, which contains a detailed explanation on Elasticsearch match_only_text field type (for storage optimization).

Elasticsearch Exact Match: Techniques and Best Practices

1. Keyword Data Type

For exact match searches, it’s essential to use the keyword data type for the fields you want to query. The keyword data type is not analyzed, which means the field’s value remains unchanged during indexing. This allows for exact match searches without worrying about tokenization or normalization.

Example mapping:

{
"mappings": {
"properties": {
"title": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}

2. Term Query

The term query is the most straightforward way to perform an exact match search. It looks for the exact term in the field without any analysis. Use the term query with the keyword field to retrieve documents that match the given value.

Example query:

{
"query": {
"term": {
"title.keyword": "Elasticsearch Exact Match"
}
}
}

3. Match Query with Operator

The match query is typically used for full-text search, but you can also use it for exact match searches by setting the “operator” parameter to “and”. This ensures that all terms in the query must be present in the field for a document to be considered a match.

Example query:

{
"query": {
"match": {
"title": {
"query": "Elasticsearch Exact Match",
"operator": "and"
}
}
}
}

4. Phrase Query

A phrase query can also be used for exact match searches by searching for the exact sequence of terms in the field. This is particularly useful when you need to match a specific phrase or sequence of words.

Example query:

{
"query": {
"match_phrase": {
"title": "Elasticsearch Exact Match"
}
}
}

5. Filter Context

When performing exact match searches, it’s recommended to use a filter context instead of a query context. This improves performance as filters are cached and do not contribute to the relevance score calculation.

Example query:

{
"query": {
"bool": {
"filter": {
"term": {
"title.keyword": "Elasticsearch Exact Match"
}
}
}
}
}

Conclusion 

In conclusion, there are several techniques for exact match searches in Elasticsearch. By using the keyword data type, term query, match query with AND operator, phrase query, and filter context, you can efficiently perform exact match searches and retrieve the desired documents.

How helpful was this guide?

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?


Get expert answers on Elasticsearch/OpenSearch