2015-01-05 11 views
7

में पृष्ठांकन + मैं अनुक्रमित में से एक में एक एकत्रीकरण + छंटाई + पृष्ठांकन करने की ज़रूरत है।एकत्रीकरण छँटाई + लोचदार खोज

मैं लचीला खोज की आंतरिक कार्यप्रणाली के बारे में सीखा है,

मैं 5 की कुल के टुकड़े है, यह अलग-अलग टुकड़ों को सॉर्ट और परिणाम लायेगा, डिफ़ॉल्ट रूप से प्रत्येक ठीकरा 10 रिकॉर्ड में वापस आ जाएगी। फिर 50 रिकॉर्ड फिर से हल कर रहे हैं और यह शीर्ष 10 रिकॉर्ड लायेगा के बाद से डिफ़ॉल्ट आकार के द्वारा होता है 10

ouput: आदेश करने के लिए .इसके

एकत्रित परिणाम "एकत्रित" के रूप में नामित अलग क्षेत्र में लौटा दिए जाते हैं इस समेकित डेटा, आकार और सेगमेंट में अंकन काम नहीं कर रहे हैं।

termBuilder.size (500) कर के थक गया, अब तर्क था इस लिंक (http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html)

यह डेटा की अशुद्धि की ओर जाता है के अनुसार अलग है।

किसी भी एक मुझे बता सकते हैं कि कैसे एकत्रीकरण + पृष्ठांकन से निपटने के लिए।

उत्तर

9

elasticsearch में, यह एक एकत्रीकरण पृष्ठ पर अंक लगाना संभव नहीं है। आकार निर्दिष्ट होने पर क्वेरी सटीक परिणाम नहीं देगी। तो, सॉर्टिंग और पेजिनेशन करने का एकमात्र तरीका आकार 0 देना और सभी दस्तावेजों को वापस करना है और फिर, आगे के संचालन के लिए सभी परिणामों को जमा करके आवश्यक परिणाम प्राप्त करें।

+0

वास्तव में, पृष्ठांकन संभव है और वास्तव में ES की एक बुनियादी हिस्सा है: http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/pagination.html हालांकि, मैं नहीं जानता कि यह है कि एकत्रीकरण के दौरान संभव है। –

+5

पेजिंग केवल आकार और आकार का उपयोग करके हिट के लिए संभव है। लेकिन एकत्रीकरण के लिए, सटीक परिणामों के साथ अंकन करने का कोई तरीका नहीं है। निर्दिष्ट होने पर एकत्रीकरण में आकार सटीक परिणाम नहीं देता है। – Nishant

+0

आह, मैं देखता हूं - तो यह एकत्रीकरण के दौरान केवल असंभव है? अजीब बात यह है कि जब आप एकत्रित होते हैं तो आकार आपको सटीक परिणाम नहीं देगा; मुझे आश्चर्य है कि ऐसा क्यों है। मेरा मतलब है, इसमें परिणामों की सूची है; मुझे आश्चर्य है कि यह इसके आकार या पेजिनेट का अनुमान क्यों नहीं लगा सकता है। –

0

पेजिंग एकत्रीकरण परिणाम partition का उपयोग कर समर्थित है। आधिकारिक दस्तावेज़ों में यह अनुभाग बहुत उपयोगी है। https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_filtering_values_with_partitions

{ 
    "size": 0, 
    "aggs": { 
     "expired_sessions": { 
     "terms": { 
      "field": "account_id", 
      "include": { 
       "partition": 0, 
       "num_partitions": 20 
      }, 
      "size": 10000, 
      "order": { 
       "last_access": "asc" 
      } 
     }, 
     "aggs": { 
      "last_access": { 
       "max": { 
        "field": "access_date" 
       } 
      } 
     } 
     } 
    } 
} 
0

elasticsearch में, इसके लिए कोई सही समाधान है। You may use filtering with partition options लेकिन लागू किया विभाजक अपने अनुसार क्रमबद्ध परिणाम तोड़ सकते हैं। ES किसी दिए गए फ़ील्ड पर विभाजन ऑपरेशन करता है और अनुरोधित विभाजन से बाल्टी देता है। तो आपका परिणाम विभाजन के आदेश के साथ समाप्त होता है। (आप अन्य विभाजन संख्या के साथ अनुवर्ती अनुरोध सभी विभाजनों से डेटा इकट्ठा करने के लिए बनाने की जरूरत है।)

मेरे सुझाव प्रत्येक शब्द के लिए एक उच्च आकार मूल्य आप अपने प्रश्न में उल्लेख किया है के रूप में देना है।

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