Elasticsearch How to Implement Autocomplete in Elasticsearch

By Opster Team

Updated: Jun 11, 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.

Before you dig into the details of this 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 search operation.

You can also try for free our full platform: AutoOps for Elasticsearch. It will prevent issues automatically and perform advanced optimizations to keep your search operation running smoothly. Try AutoOps for free.

Introduction

Autocomplete is a widely used feature in search applications, providing users with relevant suggestions as they type their query. Elasticsearch offers multiple ways to implement autocomplete, including the edge n-gram tokenizer and the completion suggester. In this article, we will discuss how to implement autocomplete using the completion suggester.

Implementing Autocomplete in Elasticsearch

Step 1: Create an index with a completion suggester field

To use the completion suggester, you need to define a field of type “completion” in your index mapping. Here’s an example of creating an index with a completion suggester field:

PUT /autocomplete
{
  "mappings": {
    "properties": {
      "name": {
        "type": "text"
      },
      "suggest": {
        "type": "completion"
      }
    }
  }
}

In this example, we created an index named “autocomplete” with two fields: “name” (text) and “suggest” (completion).

Step 2: Index documents with completion suggester field

Now, you need to index documents containing the completion suggester field. The field should contain an array of input strings that will be used for suggestions. Here’s an example of indexing a document:

PUT /autocomplete/_doc/1
{
  "name": "Elasticsearch",
  "suggest": {
    "input": ["elastic", "search", "elasticsearch"]
  }
}

In this example, we indexed a document with the name “Elasticsearch” and the suggest field containing three input strings: “elastic”, “search”, and “elasticsearch”.

Step 3: Use the _search API with the completion suggester

To get autocomplete suggestions, you can use the _search API with the “suggest” parameter. Here’s an example of querying for suggestions:

POST /autocomplete/_search
{
  "suggest": {
    "name-suggestion": {
      "prefix": "elas",
      "completion": {
        "field": "suggest"
      }
    }
  }
}

In this example, we searched for suggestions with the prefix “elas” using the completion suggester field “suggest”. The response will include suggestions based on the input strings in the suggest field.

Step 4: Customize the completion suggester (optional)

You can customize the completion suggester by adding options like “fuzzy” or “skip_duplicates”. Here’s an example of using the fuzzy option:

POST /autocomplete/_search
{
  "suggest": {
    "name-suggestion": {
      "prefix": "elstic",
      "completion": {
        "field": "suggest",
        "fuzzy": {
          "fuzziness": 1
        }
      }
    }
  }
}

In this example, we searched for suggestions with the prefix “elstic” and allowed one character difference using the fuzziness option.

Conclusion

By following these steps, you can implement autocomplete in Elasticsearch using the completion suggester. This approach provides fast and efficient suggestions, improving the user experience in your search application. If you want to learn more about Elasticsearch autocomplete search, check out this guide.

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