Välj nested när flera villkor måste gälla samma element i en array. Annars kan värden från olika element av misstag uppfylla frågan tillsammans.
En produkt med två varianter
Det finns ingen röd variant i storlek L. Men vanlig object-mapping plattar ut fälten till flera färger och storlekar och tappar vilken storlek som hör till vilken färg. En fråga efter röd och L kan därför felaktigt matcha produkten.
Mappa variants som nested och color/size som keyword. Använd sedan:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Båda filtren körs nu inom ett nested-element, så exempelprodukten matchar inte. Ändra L till S så kan den röda varianten matcha.
Nested-element skapar fler interna dokument och dyrare frågor. Vanlig object är enklare när relationer inuti arrayer inte behöver bevaras. Testa både giltiga kombinationer och kombinationer mellan element innan du bestämmer att mappingen fungerar.
Ett bibliotek med IT-intervjufrågor och detaljerade svar — från Junior till Senior.
Donera