# How to set a lowercase analyzer

**URL:** <https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957>\
**Category:** Elasticsearch\
**Created:** [December 25, 2016, 9:06am UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957 "2016-12-25T09:06:53Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![gilisade](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gilisade/32/98740_2.png) [@gilisade](https://discuss.elastic.co/u/gilisade)\
**Post date:** [December 25, 2016, 9:06am UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/1 "2016-12-25T09:06:53Z")

</div>

HI  
i have an index that containes a field with the value test.  
somtimes the field containes : "Test" or "TEST" or "test"

i need to do a bool query that matches all three ocations.  
i read that i can do it with lowercase analyzer  
i could not figure out how to set it up

Any help?

---

<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:** [December 25, 2016, 2:02pm UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/2 "2016-12-25T14:02:25Z")

</div>

Elasticsearch does that by default with the standard analyzer.

---

<div class="post-metadata">

**Author:** ![gilisade](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gilisade/32/98740_2.png) [@gilisade](https://discuss.elastic.co/u/gilisade)\
**Post date:** [December 26, 2016, 11:37am UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/3 "2016-12-26T11:37:03Z")

</div>

yes eventually i managed to do it  
but the field type must be text and analyzed  
thank 🙂

BTW  
is there a way to query (with bool) incasesensitive?

---

<div class="post-metadata">

**Author:** ![gilisade](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gilisade/32/98740_2.png) [@gilisade](https://discuss.elastic.co/u/gilisade)\
**Post date:** [January 2, 2017, 8:29am UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/4 "2017-01-02T08:29:40Z")

</div>

i actually managed to do that with bool and query string:

```
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "FIELD:*STRING*",
            "analyze_wildcard": true
          }
        }
        ]
    }
   }

```

this will search for the string in a non-case sensitive way (for an analyzed field)

---

<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:** [January 2, 2017, 8:51am UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/5 "2017-01-02T08:51:15Z")

</div>

Note that using a leading wildcard is really discouraged.

Why not using a match query instead?

---

<div class="post-metadata">

**Author:** ![gilisade](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gilisade/32/98740_2.png) [@gilisade](https://discuss.elastic.co/u/gilisade)\
**Post date:** [January 2, 2017, 9:55am UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/6 "2017-01-02T09:55:44Z")

</div>

To be honest  
I looked how kibana does the same request and it uses query\_string  
what's the benefit of using match query over query\_string in this case?

---

<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:** [January 2, 2017, 10:17am UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/7 "2017-01-02T10:17:21Z")

</div>

I see. `query_string` is ok but I'd not use wildcard if possible.

---

<div class="post-metadata">

**Author:** ![gilisade](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gilisade/32/98740_2.png) [@gilisade](https://discuss.elastic.co/u/gilisade)\
**Post date:** [January 2, 2017, 12:32pm UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/8 "2017-01-02T12:32:34Z")

</div>

I'm afraid it is not possible.  
The entire purpose of the program using this query is to search a string or a part of a string in a certain field (which can be very large) - so we must use wildcards .

---

<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:** [January 2, 2017, 12:54pm UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/9 "2017-01-02T12:54:24Z")

</div>

Ngrams wouldn't work?

---

<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:** [January 30, 2017, 12:54pm UTC](https://discuss.elastic.co/t/how-to-set-a-lowercase-analyzer/69957/10 "2017-01-30T12:54:28Z")

</div>

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