# Use multiple analyzers by field on query

**URL:** <https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396>\
**Category:** Elasticsearch\
**Created:** [September 28, 2021, 5:17pm UTC](https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396 "2021-09-28T17:17:56Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![oskrdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/oskrdt/32/67457_2.png) [@oskrdt](https://discuss.elastic.co/u/oskrdt)\
**Post date:** [September 28, 2021, 5:17pm UTC](https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396/1 "2021-09-28T17:17:56Z")

</div>

I want to do a `multi_match` query for 3 different fields, but I want 2 of those fields (indexed as text using standard analyzer) to use the `english` language analyzer and the 3rd one to use the standard analyzer. I want to do this on the query side, before trying to modify anything on the index mapping.  
I heard something about adding a `.english` notation after the field name to use english analyzer, which seems successfully when specifying it for one field, but I'm getting empty results when specifying it for two.  
Here is the example of the query I'm trying

```auto
GET myindex/_search
{
   "query": {
      "multi_match": {
          "query": "example of the text imput containing 843u43ew machine codes",
          "type": "most_fields", 
          "fields": ["field1.english","field2.english", "field3"]
      }    
   }
}

```

Could you please let me know if I'm doing something wrong?

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [September 28, 2021, 5:25pm UTC](https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396/2 "2021-09-28T17:25:34Z")

</div>

That should work asd long as you have [multi-fields](https://www.elastic.co/guide/en/elasticsearch/reference/current/multi-fields.html#_multi_fields_with_multiple_analyzers) correctly configured in your mappings for those fields. What does your mappings look like?

---

<div class="post-metadata">

**Author:** ![oskrdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/oskrdt/32/67457_2.png) [@oskrdt](https://discuss.elastic.co/u/oskrdt)\
**Post date:** [September 28, 2021, 5:42pm UTC](https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396/3 "2021-09-28T17:42:01Z")

</div>

I don't have configured multi-fields with the english analyzer. I'm assuming that adding the `.english` is doing the analyzer specification.  
Here are the mappings I have for those fields:

```auto
{
  "mappings": {
    "_doc": {
      "properties": {
        "field1": {
          "type": "text",
          "fields": {
            "raw": {
              "type": "keyword"
            }
          }
        },
        "field2": {
          "type": "text"
        },
        "field3": {
          "type": "keyword"
        }
      }
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [September 28, 2021, 5:43pm UTC](https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396/4 "2021-09-28T17:43:41Z")

</div>

Yes, you will need to add that and potentially reindex for it to work.

---

<div class="post-metadata">

**Author:** ![oskrdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/oskrdt/32/67457_2.png) [@oskrdt](https://discuss.elastic.co/u/oskrdt)\
**Post date:** [September 28, 2021, 8:54pm UTC](https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396/5 "2021-09-28T20:54:33Z")

</div>

I'm looking for a way to do this without altering the index if it's possible.  
Is the assumption that adding `.english` to the field name is changing the analyzer to english wrong? Why the query is running when I use `field1.english` if that field name is not configured as a multi-field?

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [September 28, 2021, 10:48pm UTC](https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396/6 "2021-09-28T22:48:16Z")

</div>

> [@oskrdt](#):
>
> I heard something about adding a `.english` notation after the field name to use english analyzer, which seems successfully when specifying it for one field,

I've honestly never heard of that?

---

<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:** [October 26, 2021, 10:48pm UTC](https://discuss.elastic.co/t/use-multiple-analyzers-by-field-on-query/285396/7 "2021-10-26T22:48:47Z")

</div>

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