# Question sur un problème spécifique de recherche d'éléments

**URL:** https://discuss.elastic.co/t/question-sur-un-probleme-specifique-de-recherche-delements/26232
**Category:** Discussions en français
**Created:** [July 24, 2015, 11:15am UTC](https://discuss.elastic.co/t/question-sur-un-probleme-specifique-de-recherche-delements/26232 "2015-07-24T11:15:32Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![christophe\_T](https://avatars.discourse-cdn.com/v4/letter/c/85e7bf/32.png) [@christophe\_T](https://discuss.elastic.co/u/christophe_T)
#### Post date: [July 24, 2015, 11:15am UTC](https://discuss.elastic.co/t/question-sur-un-probleme-specifique-de-recherche-delements/26232/1 "2015-07-24T11:15:32Z")

</div>

Bonjour à tous,

Premièrement je vous remercie de bien vouloir prendre du temps de lire ma question.  
Deuxièmement je vous remercie encore plus si vous arrivez à y répondre ^^

Donc voila mon problème : \*_avec la voix d'un prof de mathématique_\*

Disont que j'ai une liste de magasin indexé sur elastic, exemple:  
{"elements": [{ "type": "livre","id": "203"},{ "type": "dvd","id": "1159"},{ "type": "dvd","id": "722"}]}  
{"elements": [{ "type": "livre","id": "203"},{ "type": "dvd","value": "1513"},{ "type": "dvd","id": "723"}]}  
{"elements": [{ "type": "livre","id": "203"},{ "type": "dvd","id": "1475"}]}

J'ai ensuite un exemple à trouver dans cette liste:  
{"elements": [{ "type": "livre","id": "203"},{ "type": "dvd","value": "1475"},{ "type": "dvd","id": "723"},{ "type": "dvd","id": "1157"},{ "type": "dvd","id": "480"}]}

avec les conditions:  
Pour matcher je dois avoir au moins un element(livre ou dvd) qui correspond à ma liste mais aucun element du magasin autre que ceux listés doit être présent.

Résultats attendu:  
{"elements": [{ "type": "livre","id": "203"},{ "type": "dvd","id": "1475"}]} passe car il a un livre 203 et un dvd 1475.  
{"elements": [{ "type": "livre","id": "203"},{ "type": "dvd","value": "1513"},{ "type": "dvd","id": "723"}]} ne passe pas car le dvd 1513 n'existe pas dans notre exemple.

Ma Problématique:  
J'arrive a avoir au moins un element parmis ceux d'exemple, mais je n'arrive pas a exclure les magasins qui ont des elements en trop (pas present dans l'exemple).  
Donc je veux le magasin qui correspond le mieux à l'exemple sans avoir d'element en trop.

Ma requete pour le moment:

```

{
  "query": 
  {
    "bool": {
      "should": [
        {
          "nested": {
            "path": "elements",
            "query": {
              "bool": {
                "must": [
                  {"term": {"elements.type": "livre"}},
                  {"term": {"elements.id": "203"}}
                ]
              }
            }
          }
        },
        {
          "nested": {
            "path": "elements",
            "query": {
              "bool": {
                "must": [
                  {"term": {"elements.type": "dvd"}},
                  {"term": {"elements.id": "1557"}
                  }
                ]
              }
            }
          }
        },
        {
          "nested": {
            "path": "elements",
            "query": {
              "bool": {
                "must": [
                  {"term": {"elements.type": "dvd"}},
                  {"term": {"elements.id": "723"}}
                ]
              }
            }
          }
        },
        {
          "nested": {
            "path": "elements",
            "query": {
              "bool": {
                "must": [
                  {"term": {"elements.type": "dvd"}},
                  {"term": {"elements.id": "1157"}}
                ]
              }
            }
          }
        },
        {
          "nested": {
            "path": "elements",
            "query": {
              "bool": {
                "must": [
                  {"term": {"elements.type": "dvd"}},
                  {"term": {"elements.id": "480"}}
                ]
              }
            }
          }
        }
      ]
    }
  }
}

```

Voila je suis donc un peu bloqué sur ce sujet, j'ai pensé à compter le nombre de match du should par rapport au nombre total d'element des magasins et éliminer ceux qui ont un match \< au nombre d'élément. Mais j'ai pas non plus réussi à le transcrire avec elastic.

Donc j'en suis pour le moment à récupérer déjà ce que j'ai et a finir le traitement dans l'applicatif.

Je vous remercie encore.

---

<div class="post-metadata">

### Author: ![Fnizou](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fnizou/32/3795_2.png) [@Fnizou](https://discuss.elastic.co/u/Fnizou)
#### Post date: [July 26, 2015, 12:35pm UTC](https://discuss.elastic.co/t/question-sur-un-probleme-specifique-de-recherche-delements/26232/2 "2015-07-26T12:35:45Z")

</div>

Slt,

je débute mais voici quelques pistes :

avec :  
filter et not  
filter exists field value

en espérant que ça t'aide !

---

<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 6, 2017, 1:51pm UTC](https://discuss.elastic.co/t/question-sur-un-probleme-specifique-de-recherche-delements/26232/3 "2017-07-06T13:51:35Z")

</div>


