2013-07-10 10 views
11

मैं ईएस के लिए नया हूं और मैं एक क्वेरी बनाने की कोशिश कर रहा हूं जो एकाधिक फ़ील्ड के लिए वाक्यांश_prefix का उपयोग करेगा, इसलिए मुझे एक से अधिक बार खोजना नहीं है।कई क्षेत्रों पर Elasticsearch वाक्यांश उपसर्ग क्वेरी

यहाँ मैं अब तक क्या मिल गया है:

{ 
    "query" : { 
     "text" : { 
      "first_name" : { 
       "query" : "Gustavo", 
       "type" : "phrase_prefix" 
      } 
     } 
    } 
}' 

किसी को भी एक से अधिक क्षेत्र के लिए खोज करने के लिए कैसे जानता है करता है, कहते हैं कि "last_name"?

उत्तर

33

text query जो आप उपयोग कर रहे हैं उसे match query के पक्ष में कुछ समय पहले बहिष्कृत (प्रभावी रूप से बदला गया) हटा दिया गया है। मिलान क्वेरी एक फ़ील्ड का समर्थन करती है, लेकिन आप multi_match query का उपयोग कर सकते हैं जो एक ही विकल्प का समर्थन करता है और कई फ़ील्ड पर खोजने की अनुमति देता है।

{ 
    "query" : { 
     "multi_match" : { 
      "fields" : ["title", "subtitle"], 
      "query" : "trying out ela", 
      "type" : "phrase_prefix" 
     } 
    } 
} 

आप इस तरह जावा एपीआई का उपयोग कर एक ही प्राप्त कर सकते हैं:

QueryBuilders.multiMatchQuery("trying out ela", "title", "subtitle") 
    .type(MatchQueryBuilder.Type.PHRASE_PREFIX); 
+0

भयानक यहाँ एक उदाहरण है कि आप के लिए उपयोगी होना चाहिए है! आपका बहुत बहुत धन्यवाद! वैसे, क्या आप जावा में इसे पूरा करने के किसी भी मौके से जानते हैं? मुझे दस्तावेज़ों में नहीं मिल रहा है .. http://rajish.github.io/api/elasticsearch/0.20.0.Beta1-SNAPSHOT/org/elasticsearch/index/query/QueryBuilders.html#multiMatchQuery(java.lang। ऑब्जेक्ट, java.lang.String ...) –

+0

मेरे अपडेट किए गए उत्तर पर एक नज़र डालें;) – javanna

+4

omg मैं तुमसे प्यार करता हूँ! –

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