# Ngram vs wildcard (Using ngrams instead of wildcards)

**URL:** <https://discuss.elastic.co/t/ngram-vs-wildcard-using-ngrams-instead-of-wildcards/260809>\
**Category:** Elasticsearch\
**Created:** [January 12, 2021, 9:57am UTC](https://discuss.elastic.co/t/ngram-vs-wildcard-using-ngrams-instead-of-wildcards/260809 "2021-01-12T09:57:39Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mohsin](https://avatars.discourse-cdn.com/v4/letter/m/41988e/32.png) [@mohsin](https://discuss.elastic.co/u/mohsin)\
**Post date:** [January 12, 2021, 9:57am UTC](https://discuss.elastic.co/t/ngram-vs-wildcard-using-ngrams-instead-of-wildcards/260809/1 "2021-01-12T09:57:39Z")

</div>

We are using spring-data-elasticsearch in our Project  
we have the autocomplete function for the search textbox. When we type into the search text field, we will fetch suggestions by performing a wild card search with the characters entered in the search box.

```auto
    public List<String> fetchSuggestions(String query) {
        QueryBuilder queryBuilder = QueryBuilders
          .wildcardQuery("name", query+"*");

```

Wouldn't it be better to use ngram/edge-ngram instead of wildcard search? Does ngram/edge-ngram have better performance than wildcard query?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 9, 2021, 9:57am UTC](https://discuss.elastic.co/t/ngram-vs-wildcard-using-ngrams-instead-of-wildcards/260809/2 "2021-02-09T09:57:41Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 2, 2021, 1:53pm UTC](https://discuss.elastic.co/t/ngram-vs-wildcard-using-ngrams-instead-of-wildcards/260809/3 "2021-04-02T13:53:59Z")

</div>



---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 2, 2021, 1:56pm UTC](https://discuss.elastic.co/t/ngram-vs-wildcard-using-ngrams-instead-of-wildcards/260809/4 "2021-04-02T13:56:06Z")

</div>

> [@mohsin](#):
>
> Wouldn't it be better to use ngram/edge-ngram instead of wildcard search? Does ngram/edge-ngram have better performance than wildcard query?

Yes. It will most likely perform better. But it will take more time to index documents and more space on disk as more terms will be generated at index time.

That being said, have a look at this feature: [Keyword type family | Elasticsearch Guide [7.12] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/7.12/keyword.html#wildcard-field-type)

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [November 4, 2022, 8:21am UTC](https://discuss.elastic.co/t/ngram-vs-wildcard-using-ngrams-instead-of-wildcards/260809/5 "2022-11-04T08:21:23Z")

</div>


