2016-04-03 28 views
0
operatör

Ben elastik Search 2.2 sürümünü kullanarak ve aşağıdaki sorgu DSL kullanıyorum ve 2004 yılında.Elastik Arama "ve" birden çok değer

"I am using Razor built in 2004" 
"Razor 2004 is great" 

ancak şu arama dizesi sonucu sorgu tek arama girişi için iyi çalışır

"I am using Razor built in 2005" 
"Razor is great" 

geçersiz olur ama nasıl değiştirebileceği: Yani örneğin aşağıdaki arama dizesi sonucu geçerli olacaktır "Jilet" ve "2004" bir dizede 2015 mevcutsa veya tıraş "ve" ya nerede

{ 
     "query": { 
     "match": { 
      "product": { 
      "query": "Razor 2004","Shave 2015" 
      "operator": "and" 
      } 
     } 
     } 
    } 

gibi birden çok değer için sorgu Şimdi ben dizeleri arıyorum . Ben bool sorgusu çalıştı ama "ve" work.My bool sorguya arama gibi şuna benzer alamadım:

{ 
      "query": { 
       "query": { 
        "bool": { 
         "should": [ 
          { 
           "match": { 
            "product": "Razor 2004" 
           } 
          }, 
          { 
           "match": { 
            "product": "Shave 2015" 
           } 
          } 
         ] 
        } 
       } 
      } 
     } 

a "ve" çoklu kullanıma sahip dizede arama gibi sağlamak için herhangi bir yolu var mı IN Değerleri?

cevap

2

Yalnızca birleşim sorgularındaki AND birleştiricisini AND olarak belirtmelisiniz. Maç sorgusunun varsayılan değeri OR'dir.

"query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "product": { 
       "query": "Razor 2004", 
       "operator": "and" 
      } 
      } 
     }, 
     { 
      "match": { 
      "product": { 
       "query": "Shave 2015", 
       "operator": "and" 
      } 
      } 
     } 
     ] 
    } 
    }