# Requete sous la forme WHERE (X OR Y ) AND ( W OR Z )

**URL:** <https://discuss.elastic.co/t/requete-sous-la-forme-where-x-or-y-and-w-or-z/136490>\
**Category:** Discussions en français\
**Created:** [June 19, 2018, 12:35pm UTC](https://discuss.elastic.co/t/requete-sous-la-forme-where-x-or-y-and-w-or-z/136490 "2018-06-19T12:35:29Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Athimue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/athimue/32/32359_2.png) [@Athimue](https://discuss.elastic.co/u/Athimue)\
**Post date:** [June 19, 2018, 12:35pm UTC](https://discuss.elastic.co/t/requete-sous-la-forme-where-x-or-y-and-w-or-z/136490/1 "2018-06-19T12:35:30Z")

</div>

Bonjour,

Nouvelle journée et nouvelle question.

Je souhaite faire une requête de la forme :

> ```
> SELECT *
> FROM Personnes
> WHERE nom = "..."
> AND (prenom = "X" OR adresse = "Y")
> AND ( age = "W" OR sexe = "Z")
> 
> ```

J'ai alors confectionné une requête :

```
 GET exemple/doc/_search
 {
   "query" : {
     "bool" : {
       "must" : {
         "match": { "nom": "..."}
       }, 
       "should": [
           {"match" : { "prenom ": "X" }}, 
           {"match": {"adresse ": "Y"}},
           {"match" : { "age" : "W" }}, 
           {"match": {"sexe " : "Z"}}
       ],
       "minimum_should_match": 2
     }
   },
}

```

Cependant, cela ne corresponds pas tout à fait à ce que je veux obtenir. Je voulais créer deux bloc "should" mais cela n'est pas possible. Je ne sais comment dissocier les deux bloc "Ou" avec un "ET" au milieu.

Quelqu'un a t'il une idée ?

Cordialement,

Athimue

---

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [June 20, 2018, 9:27am UTC](https://discuss.elastic.co/t/requete-sous-la-forme-where-x-or-y-and-w-or-z/136490/2 "2018-06-20T09:27:48Z")

</div>

Boujour,

Perso j'utilise "term" au lieu de "match", pour être sure d'avoir le résultat exact.  
"match" est moins strict... ca dépends de ce que tu recherches.  
mais si tu utilises minimum\_should\_match c'est que tu veux du match.  
just pour info au cas ou:

> **[Term Query | Elasticsearch Guide \[6.3\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/6.3/query-dsl-term-query.html)**

> GET exemple/doc/\_search  
> {  
> "query" : {  
> "bool" : {  
> "must" : [  
> { "match": { "nom": "..."} }, # where nom = ....  
> {"bool": { "must" [ # AND  
> {"bool": { "should" [ # OR  
> {"match" : { "prenom ": "X" }}, # prenom = X  
> {"match": {"adresse ": "Y"}}, # adresse = Y  
> ]}}]}},  
> {"bool": { "must" [ # AND  
> {"bool": { "should" [ # OR  
> {"match" : { "age ": "X" }}, # age = W  
> {"match": {"sexe ": "Y"}}, # sexe = Z  
> ]}}]}},  
> ],  
> "minimum\_should\_match": 2  
> }  
> },  
> }

Si je ne me suis pas trompé dans les accolades ca devrait le faire.

---

<div class="post-metadata">

**Author:** ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)\
**Post date:** [June 21, 2018, 12:50am UTC](https://discuss.elastic.co/t/requete-sous-la-forme-where-x-or-y-and-w-or-z/136490/3 "2018-06-21T00:50:52Z")

</div>

Y'a aussi du direct sql pour les requetes plus simple:  
[https://www.elastic.co/guide/en/elasticsearch/reference/6.3/sql-getting-started.html](https://www.elastic.co/guide/en/elasticsearch/reference/6.3/sql-getting-started.html)

---

<div class="post-metadata">

**Author:** ![Athimue](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/athimue/32/32359_2.png) [@Athimue](https://discuss.elastic.co/u/Athimue)\
**Post date:** [June 21, 2018, 7:17am UTC](https://discuss.elastic.co/t/requete-sous-la-forme-where-x-or-y-and-w-or-z/136490/4 "2018-06-21T07:17:14Z")

</div>

Je te remercie, c'est ce que je voulais faire !

---

<div class="post-metadata">

**Author:** ![Charaf\_Ahmed](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/charaf_ahmed/32/30467_2.png) [@Charaf\_Ahmed](https://discuss.elastic.co/u/Charaf_Ahmed)\
**Post date:** [June 21, 2018, 12:09pm UTC](https://discuss.elastic.co/t/requete-sous-la-forme-where-x-or-y-and-w-or-z/136490/5 "2018-06-21T12:09:29Z")

</div>

D'ailleurs, avec la nouvelle version 6.4, on peux faire des requette SQL.

---

<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:** [July 19, 2018, 12:09pm UTC](https://discuss.elastic.co/t/requete-sous-la-forme-where-x-or-y-and-w-or-z/136490/6 "2018-07-19T12:09:32Z")

</div>

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