# How to combine multiple AND with OR in a query?

**URL:** <https://discuss.elastic.co/t/how-to-combine-multiple-and-with-or-in-a-query/198364>\
**Category:** Elasticsearch\
**Created:** [September 6, 2019, 8:00am UTC](https://discuss.elastic.co/t/how-to-combine-multiple-and-with-or-in-a-query/198364 "2019-09-06T08:00:11Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![porunov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/porunov/32/32268_2.png) [@porunov](https://discuss.elastic.co/u/porunov)\
**Post date:** [September 6, 2019, 8:00am UTC](https://discuss.elastic.co/t/how-to-combine-multiple-and-with-or-in-a-query/198364/1 "2019-09-06T08:00:11Z")

</div>

I am trying to figure out if it is possible to combine multiple AND with OR in a single request.

The query I am trying to make is: `field1 == 1 && field2 == 2 && field3!=3 && ( field4==4 || field5==5 || field6!=6 )`.  
I don't need score for the query so I tried to use filters:

```auto
{
  "query": {
    "bool" : {
      "filter": {
        "term" : { "field1" : 1 },
        "term" : { "field2" : 2 }
      },
      "must_not" : {
        "term" : { "field3" : 3 }
      }
    }
  }
}

```

How should I use `field4`, `field5` and `field6` in the query?  
Any advice is appreciated.

---

<div class="post-metadata">

**Author:** ![Mikhail\_Khludnev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mikhail_khludnev/32/59591_2.png) [@Mikhail\_Khludnev](https://discuss.elastic.co/u/Mikhail_Khludnev)\
**Post date:** [September 6, 2019, 11:03am UTC](https://discuss.elastic.co/t/how-to-combine-multiple-and-with-or-in-a-query/198364/2 "2019-09-06T11:03:14Z")

</div>

Hello, Oleksandr.  
Shouldnt it be something

{  
"query": {  
"bool" : {  
"filter": [  
{"term" : { "field1" : 1 }},  
{"term" : { "field2" : 2 }},

```
    {"bool" : {

            "must_not" : [

                     {"term" : { "field3" : 3 }},
                      { "term" : { "field6" : 6 } }
            ],
     }}

  ],

```

}  
}  
}

Notice json syntax. I suppose that filed 4,5 clasues meaning less in boolean retrieval, which differs from predicate logic.

---

<div class="post-metadata">

**Author:** ![porunov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/porunov/32/32268_2.png) [@porunov](https://discuss.elastic.co/u/porunov)\
**Post date:** [September 6, 2019, 11:52am UTC](https://discuss.elastic.co/t/how-to-combine-multiple-and-with-or-in-a-query/198364/3 "2019-09-06T11:52:39Z")

</div>

Thank you Mikhail for pointing it! It helped.  
I didn't test yet but I think the following query will work:

```auto
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "field1": 1
          }
        },
        {
          "term": {
            "field2": 2
          }
        },
        {
          "bool": {
            "should": [
              {
                "term": {
                  "field4": 4
                }
              },
              {
                "term": {
                  "field5": 5
                }
              },
              {
                "bool": {
                  "must_not": {
                    "term": {
                      "field6": 6
                    }
                  }
                }
              }
            ]
          }
        }
      ],
      "must_not": {
        "term": {
          "field3": 3
        }
      }
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![gnukev](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gnukev/32/53042_2.png) [@gnukev](https://discuss.elastic.co/u/gnukev)\
**Post date:** [September 9, 2019, 6:17am UTC](https://discuss.elastic.co/t/how-to-combine-multiple-and-with-or-in-a-query/198364/4 "2019-09-09T06:17:25Z")

</div>

Alternatively, you could use the query string query syntax if your boolean conditions get more complex.

[https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-query-string-query.html)

Hope, this helps.

---

<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 7, 2019, 6:32am UTC](https://discuss.elastic.co/t/how-to-combine-multiple-and-with-or-in-a-query/198364/5 "2019-10-07T06:32:31Z")

</div>

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