# Query using array values against String value

**URL:** <https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851>\
**Category:** Elasticsearch\
**Created:** [April 14, 2020, 5:01am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851 "2020-04-14T05:01:50Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![ngr](https://avatars.discourse-cdn.com/v4/letter/n/f07891/32.png) [@ngr](https://discuss.elastic.co/u/ngr)\
**Post date:** [April 14, 2020, 5:01am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/1 "2020-04-14T05:01:50Z")

</div>

version : "6.5.4"  
I have mapping like :  
` { "examples" : { "mappings" : { "example" : { "properties" : { // ... "petGender" : { "type" : "text" } } } } } }`

and values for  
`GET /examples/_search : { "took" : 0, "timed_out" : false, "_shards" : { "total" : 5, "successful" : 5, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : 1, "max_score" : 1.0, "hits" : [{ "_index" : "examples", "_type" : "example", "_id" : "5e9038d11543752", "_score" : 1.0, "_source" : { "gender" : "All", // ... } }] } }`

and i want to query like :  
`GET /examples/_search { "query": { "bool": { "must": [{ "bool": { "should": [ //... { "term": { "gender": ["All"] //["Male","Female"] } }, // ... ] } } ] } } } `  
and i get empty response

how do i perform query like this  
using array values against String value

---

<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 14, 2020, 7:34am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/2 "2020-04-14T07:34:11Z")

</div>

Welcome!

You should use a `match` query (which is analyzed) in that case instead of a `term` query (which is not analyzed).

---

<div class="post-metadata">

**Author:** ![ngr](https://avatars.discourse-cdn.com/v4/letter/n/f07891/32.png) [@ngr](https://discuss.elastic.co/u/ngr)\
**Post date:** [April 14, 2020, 8:34am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/3 "2020-04-14T08:34:07Z")

</div>

> [@dadoonet](#):
>
> analyzed

thank you but i have to match wheather gender is in array like ["Male","Female","Other"] currently only working for all gender that is single string "All"

---

<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 14, 2020, 9:16am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/4 "2020-04-14T09:16:21Z")

</div>

You want that the document matches one of the values or all the values?

---

<div class="post-metadata">

**Author:** ![ngr](https://avatars.discourse-cdn.com/v4/letter/n/f07891/32.png) [@ngr](https://discuss.elastic.co/u/ngr)\
**Post date:** [April 14, 2020, 9:43am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/5 "2020-04-14T09:43:19Z")

</div>

yes one of the value in array

---

<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 14, 2020, 10:15am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/6 "2020-04-14T10:15:49Z")

</div>

You can do:

```
GET /_search
{
    "query" : {
        "terms" : {
            "gender" : ["male", "female"]
        }
    }
}

```

Or if you have the mapping which uses either a `keyword` datatype or a `keyword` analyzer, you can run:

```
GET /_search
{
    "query" : {
        "terms" : {
            "gender" : ["Male", "Female"]
        }
    }
}
```

---

<div class="post-metadata">

**Author:** ![ngr](https://avatars.discourse-cdn.com/v4/letter/n/f07891/32.png) [@ngr](https://discuss.elastic.co/u/ngr)\
**Post date:** [April 14, 2020, 11:01am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/7 "2020-04-14T11:01:44Z")

</div>

> [@dadoonet](#):
>
> terms

thank you so much @dadoonet camel case and small case giving diff. result,  
value stored is "All" but need "all" in query i think i have to go through doc again.

thank you

---

<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 14, 2020, 1:04pm UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/8 "2020-04-14T13:04:59Z")

</div>

if you have an issue could you provide a full recreation script as described in [About the Elasticsearch category](https://discuss.elastic.co/t/about-the-elasticsearch-category/21). It will help to better understand what you are doing. Please, try to keep the example as simple as possible.

A full reproduction script will help readers to understand, reproduce and if needed fix your problem. It will also most likely help to get a faster answer.

---

<div class="post-metadata">

**Author:** ![ngr](https://avatars.discourse-cdn.com/v4/letter/n/f07891/32.png) [@ngr](https://discuss.elastic.co/u/ngr)\
**Post date:** [April 17, 2020, 6:01am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/9 "2020-04-17T06:01:16Z")

</div>

@dadoonet no i have solved by changing fields to keyword as you mentioned in previous solution. I just forgot to say it worked .

---

<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:** [May 15, 2020, 6:01am UTC](https://discuss.elastic.co/t/query-using-array-values-against-string-value/227851/10 "2020-05-15T06:01:25Z")

</div>

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