Rinkitės nested, kai kelios sąlygos turi galioti tam pačiam masyvo elementui. Kitaip skirtingų elementų reikšmės gali netyčia kartu patenkinti užklausą.
Produktas su dviem variantais
Raudono L dydžio varianto nėra. Tačiau įprastas object mapping suplokština laukus į kelias spalvas ir dydžius, prarasdamas jų tarpusavio ryšį. Todėl red ir L užklausa gali klaidingai atitikti produktą.
Nustatykite variants kaip nested, o color/size kaip keyword. Tada naudokite:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Abu filtrai dabar vykdomi viename nested elemente, todėl pavyzdinis produktas neatitinka. Pakeitus L į S, raudonas variantas gali atitikti.
Nested elementai sukuria papildomus vidinius dokumentus ir brangesnes užklausas. Įprastas object paprastesnis, kai masyvo ryšių išsaugoti nereikia. Prieš nuspręsdami, kad mapping veikia, testuokite ir teisingus, ir skirtingus elementus kertančius derinius.
IT pokalbių klausimų biblioteka su išsamiais atsakymais — nuo Junior iki Senior.
Paaukoti