2012-11-13 12 views
6

Ben user_id'1' ve name'John' olduğunu olduğunu verilerini sorgulamak istiyorum. Bu yaygın olarak kullanılan SQL yazmak kolay:nasıl elasticsearch için bir sorguya içine 2 maç sorguları katılmak için?

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

Ama ben elasticsearch için bir sorgu yapmak için kolay değil.

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

Ve sonuç beklediğim vardı:

Birincisi, user_id için bir sorgu yaptı.

Sonra ben name için bir sorgu yaptı:

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

Çok da iyi çalıştı.

Ama sorgu ile ve operasyon 2 koşulu birleştiren gelemedi. Nasıl kullanarak bir ve faaliyete bu 2 maç sorguları katılabilir?

(Ben yanlış olabilir, sorguyu sınamak olamazdı, ama bool-sorgu sorununuza cevap): İhtiyacınız Ne

cevap

11

hangi tüm tek sorguları koymak bir bool query olduğunu

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

Bilginize bool sorgu dokümanlar taşınmış [burada] (http://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-bool-query.html) –

+0

teşekkür ederim . elasticsearch kullanıcıları bunun için ciddi bir yönlendirme eklemelidir – Thorsten

İlgili konular