Izberite nested, ko mora več pogojev veljati za isti element v polju. Sicer lahko vrednosti iz različnih elementov po nesreči skupaj izpolnijo poizvedbo.
Izdelek z dvema različicama
Izberite nested, ko mora več pogojev veljati za isti element v polju. Sicer lahko vrednosti iz različnih elementov po nesreči skupaj izpolnijo poizvedbo.
Rdeča različica velikosti L ne obstaja. Običajni object-mapping pa polja splošči v več barv in velikosti ter izgubi njihovo povezavo. Poizvedba za rdečo in L se zato lahko napačno ujema z izdelkom.
Mapirajte variants kot nested ter color/size kot keyword. Nato uporabite:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Oba filtra zdaj delujeta znotraj istega nested-elementa, zato se primer izdelka ne ujema. Če L zamenjate s S, se rdeča različica lahko ujema.
Nested-elementi ustvarijo dodatne notranje dokumente in dražje poizvedbe. Običajni object je preprostejši, ko ohranjanje povezav znotraj polj ni potrebno. Preizkusite veljavne kombinacije in kombinacije prek različnih elementov, preden potrdite delovanje mappinga.
Knjižnica IT vprašanj za razgovore s podrobnimi odgovori — od začetnika do izkušenega.
Doniraj