2013-11-26 11 views
8

मैं लोचदार खोज के लिए नया हूं, और मैं एक सूचकांक के खिलाफ एक प्रश्न करने में सक्षम होना चाहता हूं, जो तब परिणाम के एक हिस्से का उपयोग दूसरी क्वेरी करने के लिए करता है।ElasticSearch का उपयोग करके "शामिल"/"उप-क्वेरी" कैसे करें?

उदाहरण के लिए, हमारे पास tags अनुक्रमणिका है जिसे हम मिलान करने वाले टैग के लिए क्वेरी कर सकते हैं। उस अनुक्रमणिका में संग्रहित फ़ील्ड शामिल हैं जो उस सामग्री की पहचान करते हैं जो इसके साथ जुड़ा हुआ है (हुक किया गया है)। प्रत्येक प्रकार की सामग्री में इसका स्वयं का सूचकांक होता है। मुझे टैग मिलान के लिए पूछने में सक्षम होना चाहिए, और यह न केवल टैग परिणाम, बल्कि एक संग्रहीत फ़ील्ड (इस मामले में title) से संबंधित सामग्री से संबंधित है (अलग-अलग अनुक्रमणिका)।

+0

क्या हम लोचदार खोज डेटा स्टोर पर हाइव से जॉइन ऑपरेशन करने के लिए लोचदार खोज हाइव कनेक्टर का उपयोग कर सकते हैं? - https://github.com/elastic/elasticsearch-hadoop – sumanth232

+0

[लोचदार खोज और "उप प्रश्न"] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/8808832/elastic-search-and-sub-queries) – Ankur

उत्तर

5

मुझे इसी तरह की समस्या का सामना करना पड़ा। आपको यहां शामिल होने की आवश्यकता है। Elasticsearch टीम आवेदन पक्ष का उपयोग करने की सलाह देता है। http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/application-joins.html तो तुम ES ग्राहक से किसी का उपयोग और इसी तरह के अन्य प्राप्त क्वेरी की

SearchResponse response = client.prepareSearch(scriptVersionFirst) 
        .setTypes("yourtype") 
        .setQuery(QueryBuilders.termQuery("multi", "test")) 
        .setFrom(0).setSize(60).setExplain(true) 
        .execute() 
        .actionGet(); 

    if (response != null) { 
     SearchHits hitList = response.getHits(); 
     if (hitList != null) { 
      SearchHit[] hits = hitList.hits();   
      for (SearchHit hit : hits) 
       MethodPojo source = gson.fromJson(hit.getSourceAsString(), MethodPojo.class); 
       System.out.println("Found: " + getMethodResultEntity(scriptVersionSecond, hit.getType(), source.getMethodName(), source.getMethodDesc(), source.getRequest())); 
      } 
     }

यहाँ समारोह getMethodResultEntity वापसी परिणाम कुछ लिख सकते हैं: ES को लागू करने से एक संबंधपरक डेटाबेस हमारे आवेदन में मिलती है emulates।

पीएस मैं यहाँ ईएस जावा क्लाइंट का उपयोग कर रहा हूँ। यह थोड़ा भारी है। यदि आपको जावा क्लाइंट की आवश्यकता है तो जेस्ट क्लाइंट का उपयोग करना बेहतर है - सरल स्थिति के लिए बहुत हल्का संस्करण।

+0

मुझे आश्चर्य है कि इसमें शामिल होने के लिए लोचदार खोज पूछने का कोई तरीका है या नहीं। यदि आप http://www.elastic.co/guide/en/elasticsearch/guide/master/parent-child.html पर देखते हैं तो वे कहते हैं कि 'बाल अनुरोध दस्तावेजों को एक खोज अनुरोध के परिणाम के रूप में वापस किया जा सकता है'। –

+0

क्या हम लोचदार खोज डेटा स्टोर पर हाइव से जॉइन ऑपरेशन करने के लिए लोचदार खोज हाइव कनेक्टर का उपयोग कर सकते हैं? - https://github.com/elastic/elasticsearch-hadoop – sumanth232

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