2016-04-03 14 views
6

Tôi muốn tạo ra tương đương với truy vấn sau đây -Làm thế nào để kết hợp nhiều truy vấn bool trong elasticsearch

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

tôi đã cố gắng kết hợp khác nhau của các truy vấn bool sử dụng phải và nên nhưng không có vẻ làm việc. Điều này có thể được thực hiện?

+0

gì không hoạt động - bạn có thể xây dựng? – Sanj

+0

Tôi không thể đưa ra cú pháp đúng. Luôn nhận được một số ngoại lệ phân tích cú pháp. – user1935449

Trả lời

7

Làm thế nào về một cái gì đó như thế này:

{ 
    "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" 
              } 
             } 
            ] 
           } 
          } 
         ] 
        } 
       } 
      ] 
     } 
    } 
} 
Các vấn đề liên quan