Scegli nested quando più condizioni devono applicarsi allo stesso elemento di un array. Altrimenti valori di elementi diversi possono soddisfare accidentalmente la query insieme.
Un prodotto con due varianti
Non esiste una variante rossa di taglia L. Ma il mapping object ordinario appiattisce i campi in più colori e più taglie, perdendo l'associazione tra taglia e colore. Una query per rosso e L può quindi corrispondere erroneamente al prodotto.
Mappa variants come nested e color/size come keyword. Poi usa:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Entrambi i filtri ora operano in un unico elemento nested, quindi il prodotto non corrisponde. Cambia L in S e potrà corrispondere la variante rossa.
Gli elementi nested creano documenti interni aggiuntivi e query più costose. Object ordinario è più semplice quando preservare relazioni negli array non serve. Prova combinazioni valide e combinazioni tra elementi diversi prima di considerare corretto il mapping.
Una raccolta di domande di colloquio IT con risposte dettagliate — da Junior a Senior.
Dona