# Créer des filtres dynamiques pour requête QSL, NEST

**URL:** https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038
**Category:** Discussions en français
**Created:** [March 1, 2018, 11:02am UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038 "2018-03-01T11:02:14Z")
**Posts on this page:** 15
**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, 11:02am UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/1 "2018-03-01T11:02:14Z")

</div>

Salut,  
Seul le dernier **filters.Add()** est pris en compte, comment faire en sorte pour que dans ma requête ils soient tous pris en compte ?

Voici mon code :

_Filtre dynamique :_

```
  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])
                            )

        );
    }

```

Ma requête :

```
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;
```

---

<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, 2:57pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/2 "2018-03-01T14:57:35Z")

</div>

Je ne m'y connais pas en Nest mais je dirais que tu devrais faire un truc du genre:

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

```

---

<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, 3:20pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/3 "2018-03-01T15:20:11Z")

</div>

Malheureusement non ca ne fonctionne pas.  
C'est à chaque :

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

```

Que l'ancien filters.Add() ne sera pas pris en compte, seul le dernier le sera. Cela va de même pour chaque query si je défini plusieurs Query, mon searchResponse ne prendra que le dernier Query écrit et pas tous pour effectuer la requête.

J'ai justement réussi à effectuer donc de façon statique cette requête en ajoutant l'opérateur **||** et **&&** , qui la fonctionne bien, le problème qui me survient c'est que je dois pouvoir opérer de façon dynamique.

---

<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:22pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/4 "2018-03-01T15:22:59Z")

</div>

> Que l'ancien filters.Add() ne sera pas pris en compte, seul le dernier le sera.

Certain ?

En Java en tout cas, c'est comme ça qu'il faut ajouter les filtres.

Mais ensuite, qu'est ce qui te fait dire que tes 4 filtres ne sont pas pris en compte ?  
Peut-être devait tu faire un exemple pour reproduire le problème en pure REST via la Console Dev Kibana, partager le résultat ici ?  
Ca aiderait à déterminer si il s'agit d'un bug de Nest ou des mauvais filtres ou autre chose.

---

<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, 3:27pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/5 "2018-03-01T15:27:17Z")

</div>

Mes 4 filtres sont pris en compte.  
J'ai une application qui me permet de visualiser les résultats qui me sont renvoyés donc je sais que dans ma boucle for, c'est la dernière itération qui va être prise en compte pour le résultat de searchResponse.  
Je n'y est pas pensé mais tu as raison sinon je vais faire du pas à pas peut être qu'ils sont effectivement traité mais lorsque moi je le récupère tout les autres ont déjà été récupéré à un moment et ont juste été écrasé par la suite (je sais pas si j'ai été clair).  
EDIT: non un seul résultat est retourné

Je ne connais que très peu Kibana, il existe un tutoriel pour faire cette manip ?

---

<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:45pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/6 "2018-03-01T15:45:31Z")

</div>

> Je ne connais que très peu Kibana, il existe un tutoriel pour faire cette manip ?

Faut démarrer Kibana, aller dans la Dev Console, puis faire des scripts du type: [About the Elasticsearch category](https://discuss.elastic.co/t/about-the-elasticsearch-category/21)

Le plus simple possible.

---

<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, 4:00pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/7 "2018-03-01T16:00:24Z")

</div>

Je n'est accès à kibana uniquement sur un site web

---

<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, 5:48pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/8 "2018-03-01T17:48:52Z")

</div>

Qu'est ce que cela veut dire ?

Tu as accès à Kibana ou pas ?

---

<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 2, 2018, 8:33am UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/9 "2018-03-02T08:33:18Z")

</div>

Et bien j'ai une url qui me redirige vers kibana

---

<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 2, 2018, 8:53am UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/10 "2018-03-02T08:53:02Z")

</div>

Et donc ? Tu vois Kibana ou pas ?

---

<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 2, 2018, 9:07am UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/11 "2018-03-02T09:07:10Z")

</div>

Oui oui

 ![kibana](https://us1.discourse-cdn.com/elastic/original/3X/d/3/d321095ea56dd849f5ccf2e8e2afe211ccbb3fe9.PNG)

---

<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 2, 2018, 9:17am UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/12 "2018-03-02T09:17:00Z")

</div>

En fait s'il m'était possible d'effectuer une boucle à l'intérieur de mon **filters.Add()**, il serait peut être éventuellement possible que je les créer tous, il n'existe aucun moyen de faire cela ?  
Enfin, ce qui me pose problème c'est donc la déclaration d'un nouveau filtre soit le :

```
mu => mu
```

---

<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 2, 2018, 10:12am UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/13 "2018-03-02T10:12:12Z")

</div>

J'ai trouvé, je structure mon code et je poste la solution... Bloquer 2 jours et demie sur ca c'est un peu la honte, on voit bien que je maîtrise pas encore les structures NEST du tout 😪  
Et encore c'est une piste il faut que je l'exploite, si j'y arrive je posterais la solution vers fin de journée

---

<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 2, 2018, 2:57pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/14 "2018-03-02T14:57:50Z")

</div>

Pourquoi utilises-tu une version si vieille?

---

<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 30, 2018, 2:57pm UTC](https://discuss.elastic.co/t/creer-des-filtres-dynamiques-pour-requete-qsl-nest/122038/15 "2018-03-30T14:57:53Z")

</div>

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