Vælg nested, når flere betingelser skal gælde for samme element i et array. Ellers kan værdier fra forskellige elementer utilsigtet opfylde forespørgslen sammen.
Et produkt med to varianter
Der findes ingen rød variant i størrelse L. Men almindeligt object-mapping flader felterne ud til flere farver og flere størrelser og mister forbindelsen mellem størrelse og farve. En forespørgsel efter rød og L kan derfor fejlagtigt matche produktet.
Map variants som nested og color/size som keyword. Brug derefter:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Begge filtre kører nu inde i ét nested-element, så eksempelproduktet ikke matcher. Skift L til S, og den røde variant kan matche.
Nested-elementer skaber ekstra interne dokumenter og dyrere forespørgsler. Almindeligt object er enklere, når relationer i arrays ikke behøver bevares. Test både gyldige kombinationer og kombinationer på tværs af elementer, før du konkluderer, at mappinget virker.
Et bibliotek af IT-interviewspørgsmål med detaljerede svar — fra Junior til Senior.
Donér