# Need help in writing a multi condition Query

**URL:** <https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167>\
**Category:** Elasticsearch\
**Created:** [September 26, 2024, 8:59am UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167 "2024-09-26T08:59:02Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![vkrishna](https://avatars.discourse-cdn.com/v4/letter/v/cab0a1/32.png) [@vkrishna](https://discuss.elastic.co/u/vkrishna)\
**Post date:** [September 26, 2024, 8:59am UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/1 "2024-09-26T08:59:02Z")

</div>

Hi Team,  
Need help in writing JAVA API query.  
These are my elastic documents.

```auto
{
	"number":1,
	"effective_date":"2024-10-01T00:00:00.000Z"
}
{
	"number":2,
	"effective_date":"2024-10-02T00:00:00.000Z"
}
{
	"number":3,
	"effective_date":"2024-10-03T00:00:00.000Z"
}
{
	"number":4,
	"effective_date":"2024-10-04T00:00:00.000Z"
}

```

Now I have 2 conditions

1. List numbers = List.of(2,3,4);  
Search with numbers list.
2. Apply DateRange gte on top of it "2024-10-03T00:00:00.000Z"

- 

## With this criteria I should get 3rd and 4th documents in result. Result size should be 2.

Thanks

---

<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:** [September 26, 2024, 2:17pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/2 "2024-09-26T14:17:09Z")

</div>

In your example, with this list of 2, 3, 4, only the daterange really matters.

I'd suggest a use-case with 2, 3 as values from the list and the same date range, which should give only the doc 3.

Something like:

```auto
void boolQuery() throws IOException {
    client.index(ir -> ir.index(indexName).id("1").withJson(new StringReader("""
            {
                "number":1,
                "effective_date":"2024-10-01T00:00:00.000Z"
            }""")));
    client.index(ir -> ir.index(indexName).id("2").withJson(new StringReader("""
            {
                "number":2,
                "effective_date":"2024-10-02T00:00:00.000Z"
            }""")));
    client.index(ir -> ir.index(indexName).id("3").withJson(new StringReader("""
            {
                "number":3,
                "effective_date":"2024-10-03T00:00:00.000Z"
            }""")));
    client.index(ir -> ir.index(indexName).id("4").withJson(new StringReader("""
            {
                "number":4,
                "effective_date":"2024-10-04T00:00:00.000Z"
            }""")));
    client.indices().refresh(rr -> rr.index(indexName));
    SearchResponse<Void> response = client.search(sr -> sr
                    .index(indexName)
                    .query(q -> q.bool(bq -> bq
                            .filter(fq -> fq.terms(tq -> tq.field("number")
                                    .terms(t -> t.value(List.of(
                                            FieldValue.of("2"), 
                                            FieldValue.of("3"))))))
                            .filter(fq -> fq
                                    .range(rq -> rq.date(drq -> drq
                                            .field("effective_date")
                                            .gte("2024-10-03T00:00:00.000Z"))))
                    ))
            , Void.class);
    assertNotNull(response.hits().total());
    assertEquals(1, response.hits().total().value());
    assertEquals("3", response.hits().hits().get(0).id());
}

```

I documented it here:

> <https://github.com/dadoonet/elasticsearch-java-client-demo/blob/a7b070da3eab6900508ba24bacb2d392be3b340b/src/test/java/fr/pilato/test/elasticsearch/hlclient/EsClientIT.java#L1021-L1060>

---

<div class="post-metadata">

**Author:** ![vkrishna](https://avatars.discourse-cdn.com/v4/letter/v/cab0a1/32.png) [@vkrishna](https://discuss.elastic.co/u/vkrishna)\
**Post date:** [September 26, 2024, 4:01pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/3 "2024-09-26T16:01:42Z")

</div>

Hi there,  
I want pass list to the query.  
looking for that query

---

<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:** [September 26, 2024, 4:51pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/4 "2024-09-26T16:51:22Z")

</div>

`List.of` seems to be a List to me. What do you mean?

---

<div class="post-metadata">

**Author:** ![vkrishna](https://avatars.discourse-cdn.com/v4/letter/v/cab0a1/32.png) [@vkrishna](https://discuss.elastic.co/u/vkrishna)\
**Post date:** [September 26, 2024, 5:41pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/5 "2024-09-26T17:41:43Z")

</div>

> [@vkrishna](#):
>
> numbers

I want to use **numbers** in the query. I dont want to expand it.

---

<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:** [September 26, 2024, 5:57pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/6 "2024-09-26T17:57:06Z")

</div>

You mean that you don't want to convert a List of numbers to a List of `FieldValue`?

---

<div class="post-metadata">

**Author:** ![vkrishna](https://avatars.discourse-cdn.com/v4/letter/v/cab0a1/32.png) [@vkrishna](https://discuss.elastic.co/u/vkrishna)\
**Post date:** [September 26, 2024, 6:02pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/7 "2024-09-26T18:02:39Z")

</div>

Yes. I dont want to expand my list.

---

<div class="post-metadata">

**Author:** ![vkrishna](https://avatars.discourse-cdn.com/v4/letter/v/cab0a1/32.png) [@vkrishna](https://discuss.elastic.co/u/vkrishna)\
**Post date:** [September 26, 2024, 6:38pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/8 "2024-09-26T18:38:49Z")

</div>

Convert is okay, but I dont want to expand my list. I have a big list.

---

<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:** [September 26, 2024, 6:53pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/9 "2024-09-26T18:53:59Z")

</div>

I don't understand. Anyway, I don't have any other idea.

---

<div class="post-metadata">

**Author:** ![vkrishna](https://avatars.discourse-cdn.com/v4/letter/v/cab0a1/32.png) [@vkrishna](https://discuss.elastic.co/u/vkrishna)\
**Post date:** [September 26, 2024, 7:01pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/10 "2024-09-26T19:01:03Z")

</div>

List.of(FieldValue.of("2"), FieldValue.of("3"))  
I have a list of 100 numbers.  
I cant expand like this for 100 numbers.  
Can I pass it as list?

---

<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:** [September 26, 2024, 7:30pm UTC](https://discuss.elastic.co/t/need-help-in-writing-a-multi-condition-query/367167/11 "2024-09-26T19:30:08Z")

</div>

I guess you can easily write a method which does that
