Valitse nested, kun useiden ehtojen on koskettava samaa taulukon alkiota. Muuten eri alkioiden arvot voivat vahingossa täyttää kyselyn yhdessä.
Tuote, jolla on kaksi versiota
Punaista L-kokoista versiota ei ole. Tavallinen object-mapping kuitenkin litistää kentät useiksi väreiksi ja ko'oiksi ja hukkaa niiden välisen yhteyden. Punaisen ja L-koon kysely voi siis virheellisesti täsmätä tuotteeseen.
Määritä variants tyypiksi nested ja color/size tyypiksi keyword. Käytä sitten:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Molemmat suodattimet toimivat nyt saman nested-alkion sisällä, joten esimerkkituote ei täsmää. Vaihda L arvoksi S, niin punainen versio voi täsmätä.
Nested-alkiot luovat lisää sisäisiä dokumentteja ja kalliimpia kyselyjä. Tavallinen object on yksinkertaisempi, kun taulukon sisäisiä suhteita ei tarvitse säilyttää. Testaa sekä kelvolliset että eri alkioista yhdistetyt yhdistelmät ennen mappingin hyväksymistä.
Kirjasto IT-haastattelukysymyksiä yksityiskohtaisine vastauksineen — Juniorista Senioriin.
Lahjoita