Velg nested når flere betingelser må gjelde samme element i en array. Ellers kan verdier fra forskjellige elementer utilsiktet oppfylle spørringen sammen.
Et produkt med to varianter
Det finnes ingen rød variant i størrelse L. Vanlig object-mapping flater imidlertid ut feltene til flere farger og størrelser og mister koblingen mellom dem. En spørring etter rødt og L kan derfor feilaktig matche produktet.
Map variants som nested og color/size som keyword. Bruk deretter:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Begge filtrene kjører nå innenfor samme nested-element, så eksempelproduktet matcher ikke. Endre L til S, så kan den røde varianten matche.
Nested-elementer lager flere interne dokumenter og dyrere spørringer. Vanlig object er enklere når relasjoner innenfor arrayer ikke må bevares. Test både gyldige kombinasjoner og kombinasjoner på tvers av elementer før du avgjør at mappingen virker.
Et bibliotek av IT-intervjuspørsmål med detaljerte svar — fra Junior til Senior.
Doner