# Match sur plusieurs valeurs

**URL:** https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101
**Category:** Discussions en français
**Created:** [November 15, 2016, 11:34am UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101 "2016-11-15T11:34:41Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![Olivier\_Murciano](https://avatars.discourse-cdn.com/v4/letter/o/b5ac83/32.png) [@Olivier\_Murciano](https://discuss.elastic.co/u/Olivier_Murciano)
#### Post date: [November 15, 2016, 11:34am UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101/1 "2016-11-15T11:34:42Z")

</div>

Bonjour,

Je suis nouveau sur EL et je travaille a faire des queries EL via un site web.

en parcourant la doc, j'ai trouve le terme TERM pour une recherche d'un terme exact. Si on doit chercher plusiers termes sur un meme champs, on utilise TERMS avec un array en parametre.

Existe t-il la meme chose pour MATCH? C'est a dire utiliser match avec un array.

merci de votre aide

---

<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: [November 15, 2016, 11:48am UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101/2 "2016-11-15T11:48:53Z")

</div>

Quels sont tes documents?  
Quelles sont les termes ou phrases sur lesquelles tu souhaites que ca matche (fonctionnellement parlant) ?

---

<div class="post-metadata">

### Author: ![Olivier\_Murciano](https://avatars.discourse-cdn.com/v4/letter/o/b5ac83/32.png) [@Olivier\_Murciano](https://discuss.elastic.co/u/Olivier_Murciano)
#### Post date: [November 15, 2016, 11:56am UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101/3 "2016-11-15T11:56:07Z")

</div>

Bonjour,

pour etre bref, j'ai un select de recherche multi-criteres sur mon site\> Ce champs correspond a un champs de ma BD EL.  
Ce que j'aimerai c'est une fois qu'il a selectionne les valeurs dans le select, il demande a EL de me recherche dans le champs en question en fonction des valeurs selectionnees (quelles soient exactes ou partielles).  
Sur une donnee unique, j'arrive a le faire marche avec match, mais des qu'il y en a plusieurs je seche.

---

<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: [November 15, 2016, 12:25pm UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101/4 "2016-11-15T12:25:26Z")

</div>

Tu peux faire du bool / should avec une clause match par terme cherché.

Un exemple complet serait plus facile pour répondre.

---

<div class="post-metadata">

### Author: ![Olivier\_Murciano](https://avatars.discourse-cdn.com/v4/letter/o/b5ac83/32.png) [@Olivier\_Murciano](https://discuss.elastic.co/u/Olivier_Murciano)
#### Post date: [November 15, 2016, 12:30pm UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101/5 "2016-11-15T12:30:28Z")

</div>

voila ma requete si je filtre sur 1 seule valeur pour le match:

query: {  
bool: {  
must: [  
{  
match: {  
"[site.name](http://site.name)": "Trans"  
}  
},  
{  
terms: {  
"[status.id](http://status.id)": [0,4]  
}  
}  
]  
}  
}

j'aimerai pouvoir faire une recherche comme terms mais pour [site.name](http://site.name)

---

<div class="post-metadata">

### Author: ![ChristopheBoucaut](https://avatars.discourse-cdn.com/v4/letter/c/54ee81/32.png) [@ChristopheBoucaut](https://discuss.elastic.co/u/ChristopheBoucaut)
#### Post date: [November 15, 2016, 2:08pm UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101/6 "2016-11-15T14:08:54Z")

</div>

Ce que propose David donnerait ceci :

Soit tu veux un "and" entre les critères sur [site.name](http://site.name), tu aurais :

```json
"query": {
    "bool": {
        "must": [
            {
                "match": {
                    "site.name": "Trans"
                }
            },
            {
                "match": {
                    "site.name": "Autretruc"
                }
            },
            {
                "terms": {
                    "status.id": [0,4]
                }
            }
        ]
    }
}

```

Soit tu veux un "or" entre les critères sur [site.name](http://site.name), tu aurais :

```json
"query": {
    "bool": {
        "must": [
            {
                "terms": {
                    "status.id": [0,4]
                }
            }
        ],
        "should": [
            {
                "match": {
                    "site.name": "Trans"
                }
            },
            {
                "match": {
                    "site.name": "Autretruc"
                }
            }
        ]
    }
}

```

Et si jamais tu n'as qu'un critère à chaque fois, tu peux éventuellement les agréger et faire ceci (mais c'est moins sûr/bien que les exemples précédents il me semble) :

```json
"query": {
    "bool": {
        "must": [
            {
                "match": {
                    "site.name": {
                        "query": "Trans Autretruc",
                        "operator": "and" // ou or
                    }
                }
            },
            {
                "terms": {
                    "status.id": [0,4]
                }
            }
        ]
    }
}

```

Je laisse David confirmer l'idée, je ne suis pas totalement sur du second exemple.

EDIT : Ajout d'un exemple avec filter suite à proposition de David :

```json
"query": {
    "bool": {
        "must": [
            {
                "match": {
                    "site.name": {
                        "query": "Trans Autretruc",
                        "operator": "and" // ou or
                    }
                }
            }
        ],
        filter: [
            {
                "terms": {
                    "status.id": [0,4]
                }
            }
        ]
    }
}

```

---

<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: [November 15, 2016, 2:21pm UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101/7 "2016-11-15T14:21:06Z")

</div>

Oui j'ajoute que faire un filter au lieu d'un must sur les ids est plus efficace sans doute.

---

<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: [December 13, 2016, 2:21pm UTC](https://discuss.elastic.co/t/match-sur-plusieurs-valeurs/66101/8 "2016-12-13T14:21:15Z")

</div>

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