# Elastic query to fetch multiple docs from multiple indexes based on input(multiple param)

**URL:** <https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829>\
**Category:** Elasticsearch\
**Created:** [December 8, 2017, 11:10am UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829 "2017-12-08T11:10:20Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![skodari](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/skodari/32/19875_2.png) [@skodari](https://discuss.elastic.co/u/skodari)\
**Post date:** [December 8, 2017, 11:10am UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/1 "2017-12-08T11:10:20Z")

</div>

Hi Team,

Need an elastic query to fetch multiple docs from multiple indexes based on input.  
If I have given two fields as input, It needs verify both indexes and fetch the docs, or if at least one match should fetch that doc.

example:

> ```
> GET my_index1,my_index2/_search
> {
> "query": {
> "bool":{
> "filter": [
> { "match": {"index1field" : "001"}},
> { "match": {"index2field" : "USERD"}}
> ]
> }
> }
> }
> 
> ```

Note: assume "index1field" : "001" belongs to my\_index1 and "index2field" : "USERD" belongs to my\_index2

Here I am expecting out put with two docs.  
If at least one match it needs fetch one record like OR.

> GET my\_index1,my\_index2/\_search?q=index1field : 001

--\> It is ok for one input parameter but what about multiple param to get the multi data ?

Any one please provide elastic query (kibana) for this ?

---

<div class="post-metadata">

**Author:** ![iti](https://avatars.discourse-cdn.com/v4/letter/i/b19c9b/32.png) [@iti](https://discuss.elastic.co/u/iti)\
**Post date:** [December 8, 2017, 6:56pm UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/2 "2017-12-08T18:56:49Z")

</div>

Like this:

```
GET /my_index1,my_index2/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": {
              "match": {
                "index1field": "001"
              }
            }
          }
        },
        {
          "bool": {
            "must": {
              "match": {
                "index2field": "USERD"
              }
            }
          }
        }
      ]
    }
  }
}
```

---

<div class="post-metadata">

**Author:** ![skodari](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/skodari/32/19875_2.png) [@skodari](https://discuss.elastic.co/u/skodari)\
**Post date:** [December 11, 2017, 3:02pm UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/3 "2017-12-11T15:02:02Z")

</div>

Thank you very much iti.

is there any possibility with one bool instead of 3 ?

---

<div class="post-metadata">

**Author:** ![iti](https://avatars.discourse-cdn.com/v4/letter/i/b19c9b/32.png) [@iti](https://discuss.elastic.co/u/iti)\
**Post date:** [December 11, 2017, 8:30pm UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/4 "2017-12-11T20:30:39Z")

</div>

Bool is more powerful, you can have a lot more conditions (nested).

But if you like,

```
 GET /my_index1,my_index2/_search
    {
      "query": {
        "bool": {
          "should": [
            {
              "term": {
                "index1field.keyword": "001"
              }
            },
            {
              "term": {
                "index2field.keyword": "USERD"
              }
            }
          ]
        }
      }
    }
```

---

<div class="post-metadata">

**Author:** ![skodari](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/skodari/32/19875_2.png) [@skodari](https://discuss.elastic.co/u/skodari)\
**Post date:** [December 12, 2017, 8:16am UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/5 "2017-12-12T08:16:05Z")

</div>

Thank you iti.

But the above query fetching only one document even it satisfies the two conditions.(I've tried with out keyword also).

I am expecting two docs if it satisfies the two condition.  
Can you please help into this ?

---

<div class="post-metadata">

**Author:** ![iti](https://avatars.discourse-cdn.com/v4/letter/i/b19c9b/32.png) [@iti](https://discuss.elastic.co/u/iti)\
**Post date:** [December 13, 2017, 4:40am UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/6 "2017-12-13T04:40:09Z")

</div>

Works fine on my server.  
Could you show me the mapping and data?

---

<div class="post-metadata">

**Author:** ![skodari](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/skodari/32/19875_2.png) [@skodari](https://discuss.elastic.co/u/skodari)\
**Post date:** [December 13, 2017, 7:51am UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/7 "2017-12-13T07:51:49Z")

</div>

Thank you iti, It's working fine after correcting my data.

and It's working fine with multi bool also as you suggested earlier like below

```
GET /my_index1,my_index2/_search
{
  "query": {
    "bool": {
      "should": [
        {
      "bool":{
          "must":[
            {"match":{
            "index1field.keyword": "001"
            }
            },
            {"range":{
            "exp_tms":{
              "gte":"now"
          }
        }
        }]}},
        {
          "bool": {
            "must": {
              "match": {
                "index2field.keyword": "USERD"
              }
            }
          }
        }
      ]
    }
  }
}

```

Is this not possible in single bool,  
Why because we are java client to elastic, we have an ready made functionality for one bool.  
otherwise I need implement java code for multi bool to prepares elastic query(uri)

---

<div class="post-metadata">

**Author:** ![iti](https://avatars.discourse-cdn.com/v4/letter/i/b19c9b/32.png) [@iti](https://discuss.elastic.co/u/iti)\
**Post date:** [December 13, 2017, 5:58pm UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/8 "2017-12-13T17:58:09Z")

</div>

If you have complex query, multiple BOOLs is not avoidable. Just wondering how you implement the client. If you use low level REST client. It takes any query you send just like Kibana.

Take a look at this example:

> **[luminis-ams/elastic-rest-spring-wrapper](https://github.com/luminis-ams/elastic-rest-spring-wrapper)**
>
> elastic-rest-spring-wrapper - Thin wrapper for interacting with elasticsearch using the REST client

---

<div class="post-metadata">

**Author:** ![skodari](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/skodari/32/19875_2.png) [@skodari](https://discuss.elastic.co/u/skodari)\
**Post date:** [December 14, 2017, 11:57am UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/9 "2017-12-14T11:57:13Z")

</div>

yes iti, we are using above code to interact elastic with java.  
Thank you !!!!

---

<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 11, 2018, 11:57am UTC](https://discuss.elastic.co/t/elastic-query-to-fetch-multiple-docs-from-multiple-indexes-based-on-input-multiple-param/110829/10 "2018-01-11T11:57:20Z")

</div>

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