2016-04-03 9 views
6

में कई bool प्रश्नों गठबंधन करने के लिए मैं इस क्वेरी का बराबर बनाना चाहते हैं -कैसे elasticsearch

(city = 'New York' AND state = 'NY') AND ((businessName='Java' and businessName='Shop') OR (category='Java' and category = 'Shop')) 

मैं चाहिए का उपयोग कर bool प्रश्नों के विभिन्न संयोजनों की कोशिश की और होना चाहिए लेकिन कुछ भी काम कर रहा है। क्या यह किया जा सकता है?

+0

क्या काम नहीं कर रहा है - आप विस्तार से बता सकते हैं? – Sanj

+0

मैं सही वाक्यविन्यास के साथ आने में सक्षम नहीं हूं। हमेशा कुछ पार्सिंग अपवाद प्राप्त करें। – user1935449

उत्तर

7

कैसे कुछ इस तरह के बारे में:

{ 
    "query": { 
     "match_all": {} 
    }, 
    "filter": { 
     "bool": { 
      "must": [ 
       { 
        "term": { 
         "city": "New york" 
        } 
       }, 
       { 
        "term": { 
         "state": "NY" 
        } 
       }, 
       { 
        "bool": { 
         "should": [ 
          { 
           "bool": { 
            "must": [ 
             { 
              "term": { 
               "businessName": "Java" 
              } 
             }, 
             { 
              "term": { 
               "businessName": "Shop" 
              } 
             } 
            ] 
           } 
          }, 
          { 
           "bool": { 
            "must": [ 
             { 
              "term": { 
               "category": "Java" 
              } 
             }, 
             { 
              "term": { 
               "category": "Shop" 
              } 
             } 
            ] 
           } 
          } 
         ] 
        } 
       } 
      ] 
     } 
    } 
}