અનેક શરત arrayના એક જ element પર લાગવી જોઈએ ત્યારે nested પસંદ કરો. નહીં તો જુદા elementનાં મૂલ્ય ભેગાં થઈને ભૂલથી query સંતોષી શકે છે.
બે variant ધરાવતી પ્રોડક્ટ
લાલ રંગમાં L માપનો variant નથી. પણ સામાન્ય object mapping આ fieldને અનેક રંગ અને માપમાં સપાટ કરે છે, કયું માપ કયા રંગનું તે સંબંધ ખોવે છે. એટલે લાલ અને Lની query પ્રોડક્ટને ખોટી રીતે match કરી શકે છે.
variantsને nested અને color/sizeને keyword તરીકે map કરો. પછી વાપરો:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
હવે બંને filter એક nested elementની અંદર ચાલે છે, એટલે ઉદાહરણની પ્રોડક્ટ મળતી નથી. Lને S કરો તો લાલ variant મળી શકે છે.
Nested element વધારાના આંતરિક document અને વધુ ખર્ચાળ query બનાવે છે. Arrayની અંદર સંબંધ જાળવવો જરૂરી ન હોય તો સામાન્ય object સરળ છે. Mapping કામ કરે છે તે નક્કી કરતાં પહેલાં સાચા અને જુદા elementને જોડતા બંને સંયોજન તપાસો.
વિગતવાર જવાબો સાથે IT ઇન્ટરવ્યૂ પ્રશ્નોની લાઇબ્રેરી — જુનિયરથી સિનિયર સુધી.
દાન કરો