பல நிபந்தனைகள் array இன் ஒரே element க்குப் பொருந்த வேண்டுமென்றால் nested தேர்ந்தெடுங்கள். இல்லாவிட்டால் வெவ்வேறு element களின் மதிப்புகள் சேர்ந்து தவறாக query யை நிறைவேற்றலாம்.
இரண்டு variant கொண்ட பொருள்
இங்கு சிவப்பு நிறத்தில் L அளவுடைய variant இல்லை. ஆனால் சாதாரண object mapping இந்த field களைப் பல நிறங்களாகவும் பல அளவுகளாகவும் தட்டையாக்கும்போது எந்த அளவு எந்த நிறத்துக்குரியது என்ற உறவு இழக்கப்படுகிறது. எனவே red மற்றும் L தேடும் query பொருளைத் தவறாகப் பொருத்தலாம்.
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 கள் கூடுதல் internal document களையும் அதிக செலவுள்ள query களையும் உருவாக்குகின்றன. Array உள்ளேயுள்ள உறவைப் பாதுகாக்கத் தேவையில்லாவிட்டால் சாதாரண object எளிதானது. Mapping சரியாக வேலை செய்கிறது என்று முடிவுசெய்யுமுன் செல்லுபடியான சேர்க்கைகளையும் வெவ்வேறு element களிலிருந்து வரும் சேர்க்கைகளையும் சோதியுங்கள்.
விரிவான பதில்களுடன் கூடிய IT நேர்காணல் கேள்விகளின் நூலகம் — Junior முதல் Senior வரை.
நன்கொடை