აირჩიეთ nested, როცა რამდენიმე პირობა მასივის ერთსა და იმავე ელემენტზე უნდა გავრცელდეს. წინააღმდეგ შემთხვევაში სხვადასხვა ელემენტის მნიშვნელობებმა query შეიძლება შემთხვევით ერთად დააკმაყოფილოს.
პროდუქტი ორი ვარიანტით
აირჩიეთ nested, როცა რამდენიმე პირობა მასივის ერთსა და იმავე ელემენტზე უნდა გავრცელდეს. წინააღმდეგ შემთხვევაში სხვადასხვა ელემენტის მნიშვნელობებმა query შეიძლება შემთხვევით ერთად დააკმაყოფილოს.
წითელი L ზომის ვარიანტი არ არსებობს. მაგრამ ჩვეულებრივი object mapping ველებს რამდენიმე ფერად და ზომად აბრტყელებს, რის გამოც იკარგება, რომელი ზომა რომელ ფერს ეკუთვნის. ამიტომ red და L მოთხოვნა პროდუქტს შეცდომით შეიძლება დაემთხვეს.
variants განსაზღვრეთ როგორც nested, ხოლო color/size როგორც keyword. შემდეგ გამოიყენეთ:
{
"query": {
"nested": {
"path": "variants",
"query": {
"bool": {
"filter": [
{"term":{"variants.color":"red"}},
{"term":{"variants.size":"L"}}
]
}
}
}
}
}
ორივე filter ახლა ერთ nested ელემენტში მუშაობს, ამიტომ მაგალითის პროდუქტი არ ემთხვევა. L შეცვალეთ S-ით და წითელი ვარიანტი შეიძლება დაემთხვეს.
Nested ელემენტები დამატებით შიდა document-ებსა და უფრო ძვირ query-ებს ქმნის. ჩვეულებრივი object მარტივია, როცა მასივის შიდა კავშირების შენარჩუნება არ გჭირდებათ. Mapping-ის სისწორის გადაწყვეტამდე სწორი და სხვადასხვა ელემენტის გადამკვეთი კომბინაციები გამოცადეთ.
IT გასაუბრების კითხვების ბიბლიოთეკა დეტალური პასუხებით — Junior-დან Senior-მდე.
შემოწირულობა