# Elastic serch multiple filters for dynamically selecting filters

**URL:** <https://discuss.elastic.co/t/elastic-serch-multiple-filters-for-dynamically-selecting-filters/170121>\
**Category:** Elasticsearch\
**Created:** [February 27, 2019, 7:47am UTC](https://discuss.elastic.co/t/elastic-serch-multiple-filters-for-dynamically-selecting-filters/170121 "2019-02-27T07:47:04Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Arvind\_Singh](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@Arvind\_Singh](https://discuss.elastic.co/u/Arvind_Singh)\
**Post date:** [February 27, 2019, 7:47am UTC](https://discuss.elastic.co/t/elastic-serch-multiple-filters-for-dynamically-selecting-filters/170121/1 "2019-02-27T07:47:04Z")

</div>

Hi, I am working with elasticsearch application for one of my application. My application need is below-

I have mulitple filters like location, type, qualification etc.. i have created query for this in which i am passing these filter values. so if location filter is not selected its value will be null and similar to others. therefoere, when i am applying these filters all together using terms query filter, it is giving me no result and this is because value of one or filter is going as null because those are not selected. i want that if any filter value is null or not selected i don't want to apply that filter so how can i achieve this in a common query. don't we have any such thing in filter query if filter value coming as null then filter should be run-

```auto
{
  "query": {
    "bool": {
      "must": [
        {
          "match_all": {}
        }
      ],
      "filter": [
        {
          "terms": {
            "preferredLocation.city": [
              "delhi"
            ]
          }
        },
        {
          "terms": {
            "qualificationRequired": [
              ""
            ]
          }
        },
        {
          "term": {
            "jobType": ""
          }
        },
        {
          "term": {
            "deliveryMedium": ""
          }
        }
      ]
    }
  }
}

```

---

<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:** [February 27, 2019, 8:56am UTC](https://discuss.elastic.co/t/elastic-serch-multiple-filters-for-dynamically-selecting-filters/170121/2 "2019-02-27T08:56:11Z")

</div>

You should ask your application to do that.  
For the example you wrote, you should send instead:

```auto
{
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "preferredLocation.city": [
              "delhi"
            ]
          }
        }
      ]
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![Arvind\_Singh](https://avatars.discourse-cdn.com/v4/letter/a/c57346/32.png) [@Arvind\_Singh](https://discuss.elastic.co/u/Arvind_Singh)\
**Post date:** [February 27, 2019, 9:31am UTC](https://discuss.elastic.co/t/elastic-serch-multiple-filters-for-dynamically-selecting-filters/170121/3 "2019-02-27T09:31:18Z")

</div>

Thanks for your reply. so what i understood form your point that we cannot manage it the way i wanted like to have a common query ?. Different query needs to be hit on elasticsearch for this based on which filters are selected.

---

<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:** [February 27, 2019, 9:48am UTC](https://discuss.elastic.co/t/elastic-serch-multiple-filters-for-dynamically-selecting-filters/170121/4 "2019-02-27T09:48:19Z")

</div>

Probably not in the way you want.  
You can look at search templates though. Read [https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html#\_conditional\_clauses](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-template.html#_conditional_clauses)

---

<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:** [March 27, 2019, 9:48am UTC](https://discuss.elastic.co/t/elastic-serch-multiple-filters-for-dynamically-selecting-filters/170121/5 "2019-03-27T09:48:23Z")

</div>

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