# Query DSL, multiple filter, dynamic query

**URL:** https://discuss.elastic.co/t/query-dsl-multiple-filter-dynamic-query/122016
**Category:** Elasticsearch
**Created:** [March 1, 2018, 9:42am UTC](https://discuss.elastic.co/t/query-dsl-multiple-filter-dynamic-query/122016 "2018-03-01T09:42:09Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![DiSiZ](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/disiz/32/60095_2.png) [@DiSiZ](https://discuss.elastic.co/u/DiSiZ)
#### Post date: [March 1, 2018, 9:42am UTC](https://discuss.elastic.co/t/query-dsl-multiple-filter-dynamic-query/122016/1 "2018-03-01T09:42:09Z")

</div>

Hey,

I have to create dynamic query to be more precise, create multiple filters, here's my code :

_Filter dynamic creation :_

```
var filters = new List<Func<QueryContainerDescriptor<Source>, QueryContainer>>();
for (int i = 0; i < nbPoint; i++)
{
    filters.Add(
                    mu => mu.GeoBoundingBox(ge => ge
                            .Field(f => f.End)
                            .BoundingBox(latLeftTab[i], lonLeftTab[i], latRightTab[i], lonRightTab[i])
                        ) && mu
                        .GeoBoundingBox(ge => ge
                            .Field(f => f.Start)
                            .BoundingBox(latLeftTab[i], lonLeftTab[i], latRightTab[i], lonRightTab[i])
                        ) || mu
                        .GeoBoundingBox(ge => ge
                            .Field(f => f.End)
                            .BoundingBox(latLeftTab2[i], lonLeftTab2[i], latRightTab2[i], lonRightTab2[i])
                        ) && mu
                        .GeoBoundingBox(ge => ge
                            .Field(f => f.Start)
                            .BoundingBox(latLeftTab2[i], lonLeftTab2[i], latRightTab2[i], lonRightTab2[i])
                        )

    );
}

```

_My request :_

```
var searchResponse = client.LowLevel.Search<StringResponse>("jam", "jam", PostData.Serializable(new SearchDescriptor<Source>()
                 .From(0)
                 .Size(size)
                 .Query(q => q
                     .Bool(b => b
                         .Must(fi => fi
                             .DateRange(r => r
                                 .Field(f => f.Timestamp)
                                 .GreaterThanOrEquals(limitDate)
                                 .LessThan(DateTime.Now)
                             ), mi => mi
                         )
                         .Filter(filters)
                          
                         )
                     )
                 ));
                 qJson = searchResponse.Body;

```

Only the last filter in my loop is taken

---

<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: [March 1, 2018, 3:11pm UTC](https://discuss.elastic.co/t/query-dsl-multiple-filter-dynamic-query/122016/2 "2018-03-01T15:11:35Z")

</div>

Here is what I answered in [Créer des filtres dynamiques pour requête QSL, NEST](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038)

I don't know a lot about Nest but I believe you should write something like:

```auto
filters.Add(/* one single GeoBoundingBox */);
filters.Add(/* one single GeoBoundingBox */);
filters.Add(/* one single GeoBoundingBox */);

```

---

<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 29, 2018, 3:12pm UTC](https://discuss.elastic.co/t/query-dsl-multiple-filter-dynamic-query/122016/3 "2018-03-29T15:12:11Z")

</div>

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