2014-07-09 6 views
5

मैं लोचदार खोज के लिए नया हूं, इसलिए मुझे इसके साथ कुछ मदद चाहिए।लोचदार खोज के साथ नेस्टेड पेड़ के लिए पहलू

मेरे पास products खोजने के लिए एक प्रश्न है जो कई categories से संबंधित हो सकता है। Categories एक घोंसले पेड़ में संयुक्त होते हैं।

उदाहरण डेटा:

categories: [ 
    { 
    id: 1, 
    name: 'First category', 
    categories:[ 
     { 
     id: 12, 
     name: 'First subcategory' 
     }, 
     { 
     id: 13, 
     name: 'Second subcategory' 
     } 
    ] 
    }, 
    { 
    id: 2, 
    name: 'Second category' 
    } 
], 
products: [ 
    { 
    id: 1, 
    name: 'First product', 
    categories_ids: [2, 12] 
    }, 
    { 
    id: 2, 
    name: 'Second product', 
    categories_ids: [1] 
    } 
] 

खोज परिणामों मैं (किसी भी खोज परिणामों के बिना छोड़कर श्रेणियों) प्रत्येक category में खोज परिणामों की संख्या सहित categories पेड़ प्राप्त करने की आवश्यकता के अलावा।

ऊपर उदाहरण के लिए यह होना चाहिए:

  • प्रथम श्रेणी (2)
    • पहले उपश्रेणी (1)
  • दूसरा वर्ग (1)

कर सकते हैं किसी ने elasticSearch के एकत्रीकरण का उपयोग करके यह कैसे करना है?

धन्यवाद।

+0

आपके पास कितने श्रेणी स्तर हैं? – Val

उत्तर

0

मुझे समान आवश्यकता थी और नेस्टेड ऑब्जेक्ट्स का इस्तेमाल किया गया था।

{ 
    "aggs": { 
    "category_agg": { 
     "terms": { 
     "field": "category_name" 
     }, 
     "aggs": { 
     "sub_category_agg": { 
      "terms": { 
      "field": "sub_category" 
      }, 
      "filter": { 
      "term": { 
       "sub_category": "First subcategory" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

फ़िल्टर लागू (या छोड़ देते हैं) की आवश्यकता पर के रूप में और यह सुनिश्चित करें क्षेत्रों है जिस पर आप एकत्रित करना हो: यहाँ है कि धागा

How to narrow down the current aggregation context to a specific scope within set of documents returned from Filter Aggregation?

0

मुझे लगता है कि आप इस के आसपास कुछ के लिए तलाश में हैं (इस उदाहरण में category_name और subcategory_name) नहीं किया जा सकता है।

संबंधित मुद्दे