Επιλέξτε nested όταν πολλές συνθήκες πρέπει να ισχύουν για το ίδιο στοιχείο array. Διαφορετικά, τιμές από διαφορετικά στοιχεία μπορεί να ικανοποιούν κατά λάθος μαζί το query.
Ένα προϊόν με δύο παραλλαγές
Δεν υπάρχει κόκκινη παραλλαγή μεγέθους L. Όμως το απλό object mapping ισοπεδώνει τα πεδία σε πολλά χρώματα και μεγέθη, χάνοντας τη μεταξύ τους σχέση. Έτσι ένα query για κόκκινο και L μπορεί να ταιριάξει λανθασμένα στο προϊόν.
Ορίστε variants ως nested και color/size ως keyword. Μετά χρησιμοποιήστε:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
Τα δύο filters εκτελούνται πλέον στο ίδιο nested στοιχείο, άρα το προϊόν δεν ταιριάζει. Αλλάξτε L σε S και μπορεί να ταιριάξει η κόκκινη παραλλαγή.
Τα nested στοιχεία δημιουργούν επιπλέον εσωτερικά documents και ακριβότερα queries. Το απλό object είναι ευκολότερο όταν δεν χρειάζεται διατήρηση σχέσεων στα arrays. Δοκιμάστε έγκυρους συνδυασμούς και συνδυασμούς από διαφορετικά στοιχεία πριν δεχθείτε το mapping.
Μια βιβλιοθήκη ερωτήσεων συνέντευξης IT με αναλυτικές απαντήσεις — από Junior έως Senior.
Δωρεά