2015-06-17 13 views
5

के बिना इलाके में लोचदार खोज में डुप्लिकेट फ़ील्ड मान कैसे प्राप्त करें मेरे पास एक लोचदार खोज अनुक्रमणिका में "कर्मचारी नाम" फ़ील्ड है - और मैं एक क्वेरी निष्पादित करना चाहता हूं जो मुझे उन सभी मामलों को वापस कर देगी जहां सभी हैं "कर्मचारी नाम" के डुप्लिकेट मान। क्या यह किया जा सकता है?अपने मूल्य

मुझे और_like_this मिला लेकिन इसके लिए "like_text" के लिए फ़ील्ड मान की आवश्यकता है। लेकिन मेरी आवश्यकता उन कर्मचारियों की सूची प्राप्त करना है जिनके मूल्य जानने के बिना डुप्लिकेट नाम हैं।

{ 
    "more_like_this" : { 
     "fields" : ["EmployeeName"], 
     "like_text" : "Mukesh", 
     "min_term_freq" : 1, 
     "max_query_terms" : 12 
    } 
} 

अग्रिम धन्यवाद

सादर मुकेश

+0

'कर्मचारी नाम 'का मानचित्रण कैसा दिखता है? क्या यह 'not_analyzed' है या यह एक बहु-क्षेत्र है जिसमें' not_analyzed' उप-फ़ील्ड है? क्या आप उस अर्थ में अपना मानचित्रण बदल सकते हैं? यदि ऐसा है, तो नीचे @ जेट्रो टिप्पणी देखें, आप अपने डुप्लिकेट दस्तावेज़ प्राप्त करने के लिए 'top_hits' उप-एकत्रीकरण का उपयोग कर सकते हैं। – Val

+0

उत्तर देने के लिए धन्यवाद मैपिंग में कर्मचारी नाम नहीं है और मुझे भी समेकन के अंदर परिणाम मिला है.अब मैं उस परिणाम के लिए दस्तावेज़ प्राप्त करने का प्रयास करूंगा। धन्यवाद फिर से – Mukesh

+0

HI वैल, क्या आप मुझे top_hits के लिए एक उदाहरण दे सकते हैं। मैंने इसके साथ प्रयास किया लेकिन समेकन के तहत मुझे डुप्लिकेट नामों के लिए अलग-अलग दस्तावेज़ मान मिल रहे हैं और top_hits के अंतर्गत विभिन्न दस्तावेज़ प्राप्त कर रहे हैं। धन्यवाद – Mukesh

उत्तर

9

आप इस के लिए Terms Aggregation उपयोग कर सकते हैं।

POST <index>/<type>/_search?search_type=count 
{ 
    "aggs": { 
     "duplicateNames": { 
      "terms": { 
       "field": "EmployeeName", 
       "size": 0, 
       "min_doc_count": 2 
      } 
     } 
    } 
} 

यह क्षेत्र के सभी मूल्यों को वापस कर देगा EmployeeName जो कम से कम 2 दस्तावेज़ों में होता है।

+0

यह परिणामस्वरूप भी अद्वितीय रिकॉर्ड दे रहा है। – Mukesh

+0

यह नहीं होगा। '" min_doc_count ": 2' यह सुनिश्चित करता है कि यह डुप्लिकेट किए गए मान लौटाता है। जेएसओएन प्रतिक्रिया में, आपको 'एग्रीगेशंस' 'ऑब्जेक्ट के अंदर मानों को देखने की आवश्यकता है और' हिट '' ऑब्जेक्ट नहीं है। – bittusarkar

+3

यह भी ध्यान दें कि 1) यह विधि केवल तभी काम करती है जब आपके मानचित्रण में 'कर्मचारी नाम' को 'नैनलाइज्ड' किया गया हो और 2) आपको पता नहीं चलेगा कि कौन से दस्तावेज़ डुप्लिकेट हैं, सिर्फ डुप्लिकेट हैं। – Val

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