2012-09-05 18 views
5

मेरे पास elasticsearch 0.19.9 के साथ काम करने वाले प्रश्न पूछे गए हैं।पहलुओं की लोचदार खोज संख्या

{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "field" : "tag", 
       "all_terms" : true 
      } 
     } 
    } 

}

मैं समझता हूँ, यह मुझे सभी देना चाहिए: हालांकि मैं सभी पहलुओं है कि एक गिनती> 0.

मैं करने में सक्षम होना चाहिए प्रलेखन के अनुसार वापस जाने के लिए चाहते हैं यदि गिनती 0 है तो पहलू 0.

हालांकि, यह अभी भी केवल शीर्ष 10 पहलुओं को गिनती कर रहा है। डिफ़ॉल्ट आकार कौन सा है। लौटाई गई पहलुओं की संख्या को प्रभावित करने वाली एकमात्र चीज वास्तव में "size" : N सेट कर रही है जहां N उन पहलुओं की संख्या है जिन्हें वापस किया जाएगा।

मैं इसे वास्तव में उच्च संख्या में सेट कर सकता हूं लेकिन यह हैक-आश को लगता है।

कोई विचार क्या मैं गलत कर रहा हूं?

उत्तर

4

आप कुछ भी गलत नहीं कर रहे हैं। आपने इसे सही तरीके से समझ लिया! पर open issue शब्द पहलू को Terms Stats facet के समान बनाने के लिए है जो आपको सभी शर्तों को वापस पाने के लिए आकार = 0 सेट करने की अनुमति देता है। अभी के लिए आपको केवल एक उच्च मूल्य का उपयोग करने की आवश्यकता है, जो थोड़ा मुश्किल है, मैं सहमत हूं। दूसरी ओर सावधान रहें कि बहुत सारी प्रविष्टियां वापस न करें!

+1

प्रतिक्रिया के लिए धन्यवाद ... हालांकि यह वह नहीं था जिसे मैं सुनना चाहता था। –

+0

मुझे लगता है कि आम सवाल वास्तव में उन शर्तों को फ़िल्टर करने के लिए है जो 0 से अधिक की गिनती है यानी गिनती 0 है, एक शब्द पहलू करने के बाद। Facet शर्तों की गणना करते हैं, लेकिन हम भी गणना को फ़िल्टर करना चाहते हैं। –

3
{ 
    "query" : { 
     "match_all" : { } 
    }, 
    "facets" : { 
     "tag" : { 
      "terms" : { 
       "field" : "tag", 
       "size" : 2147483647, 
       "all_terms" : false 
      } 
     } 
    } 
} 

दूर करने के लिए "गिनती: 0" एक ही रास्ता झूठे के रूप में "all_terms" डाल करने के लिए है, और अपने आकार संख्या के रूप में उच्च और अपने Elasticsearch उदाहरण में आप कर सकते हैं के रूप में के रूप में असंभव सेट (उदाहरण के ऊपर है सबसे बड़ा हस्ताक्षरित मान है कि PHP में एक पूर्णांक हो सकता है)।

यह सबसे अच्छा तरीका नहीं हो सकता है, लेकिन यह अब तक एकमात्र ज्ञात दृष्टिकोण है। फ़ेस फ़िल्टर वर्तमान में इसके साथ काम नहीं करता है (जब तक वे इसे करने के लिए Elasticsearch को अद्यतन और बेहतर नहीं करते)।

+1

मेरे पास बहुत अधिक शर्तें नहीं हैं। यह दृष्टिकोण मेरे लिए बिल्कुल ठीक काम करता है। खोज परिणाम पर्याप्त तेज़ थे। धन्यवाद! – anbiniyar