2012-11-13 13 views
6

मैं डेटा के लिए क्वेरी करना चाहता हूं कि user_id'1' और name'John' है। यह एक सामान्य रूप से प्रयुक्त एसक्यूएल लिखने के लिए आसान है:elasticsearch के लिए एक प्रश्न में 2 मिलान प्रश्नों में कैसे शामिल हों?

select * from t where user_id = '1' and name = 'John'; 

लेकिन यह आसान मुझे elasticsearch के लिए एक प्रश्न बनाने के लिए के लिए नहीं है।

पहले, मैं user_id के लिए एक प्रश्न बनाया:

{ 
    "query" : { 
    "match" : { 
     "user_id" : "1" 
    } 
    } 
} 

और परिणाम है कि मैं क्या उम्मीद कर रहे थे।

फिर, मैं name के लिए एक प्रश्न बनाया:

{ 
    "query" : { 
    "match" : { 
     "name" : "John" 
    } 
    } 
} 

यह अच्छी तरह से भी काम किया।

लेकिन मैं 2 परिस्थितियों और संचालन में शामिल होने में कोई प्रश्न नहीं उठा सका। मैं उन 2 मैच प्रश्नों में एक का उपयोग करके और संचालन में कैसे शामिल हो सकता हूं?

उत्तर

11

आप क्या जरूरत है एक bool query है जिसमें आप अपने सभी एकल प्रश्नों डाल:

(मैं क्वेरी परीक्षण कर सकते हैं नहीं है, यह गलत हो सकता है, लेकिन bool-क्वेरी आपकी समस्या का जवाब है)

{ 
    "bool" : { 
     "must" : [{ 
      "match" : { 
       "user_id" : "1" 
      }, 
      "match" : { 
       "name" : "John" 
      } 
     }] 
    } 
} 
+0

FYI bool क्वेरी डॉक्स स्थानांतरित कर दिया [यहां] (http://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-bool-query.html) –

+0

धन्यवाद । elasticsearch लोगों को गंभीरता से उस के लिए एक पुनर्निर्देशन जोड़ना चाहिए – Thorsten