Choisissez nested lorsque plusieurs conditions doivent concerner le même élément d'un tableau. Sinon, les valeurs d'éléments différents peuvent satisfaire accidentellement la requête ensemble.
Un produit avec deux variantes
Il n'existe pas de variante rouge de taille L. Mais un mapping object ordinaire aplatit ces champs en plusieurs couleurs et plusieurs tailles, perdant le lien entre chaque taille et sa couleur. Une requête rouge et L peut donc trouver le produit à tort.
Mappez variants comme nested et color/size comme keyword. Utilisez ensuite :
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Les deux filtres s'exécutent maintenant dans un même élément nested ; le produit d'exemple ne correspond donc pas. Remplacez L par S et la variante rouge peut correspondre.
Les éléments nested créent des documents internes supplémentaires et des requêtes plus coûteuses. Object ordinaire est plus simple si conserver les relations dans les tableaux est inutile. Testez les combinaisons valides et celles qui croisent plusieurs éléments avant de considérer le mapping correct.
Une bibliothèque de questions d'entretien IT avec des réponses détaillées — du Junior au Senior.
Faire un don