जब कई शर्तें array के उसी element पर लगनी हों तो nested चुनें। अन्यथा अलग elements की values मिलकर गलती से query पूरी कर सकती हैं।
दो variants वाला उत्पाद
Red size L variant मौजूद नहीं है। पर सामान्य object mapping fields को कई colors और sizes में flatten कर देती है और कौन-सा size किस color का है, यह संबंध खो देती है। इसलिए red और L की query गलत ढंग से उत्पाद match कर सकती है।
variants को nested और color/size को keyword map करें। फिर उपयोग करें:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
दोनों filters अब एक nested element के भीतर चलते हैं, इसलिए उदाहरण का उत्पाद match नहीं करता। L को S करें तो red variant match कर सकता है।
Nested elements अतिरिक्त internal documents और महँगी queries बनाते हैं। Arrays के भीतर संबंध बनाए रखना आवश्यक न हो तो सामान्य object सरल है। Mapping सही है मानने से पहले valid और cross-element combinations दोनों जाँचें।
विस्तृत उत्तरों के साथ IT इंटरव्यू प्रश्नों की एक लाइब्रेरी — जूनियर से सीनियर तक।
दान करें