2016-04-03 70 views
0

我使用彈性搜索2.2版本,使用下面的查詢DSL:彈性搜索「和」運營商與多個值

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

以下查詢的輸出將能夠拾取所有具有剃刀產品和2004年。 因此,例如下面的搜索字符串結果將是有效的:

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

但下面的搜索字符串的結果將是無效的

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

查詢非常適用於一個搜索輸入,但我怎麼能修改查詢多個值一樣

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

現在我期待的字符串,其中無論是「剃刀」和「2004年」存在或刮「和」 2015年中的字符串。 我試過布爾查詢,但無法得到的「和」之類的搜索到work.My布爾查詢如下所示:

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

有沒有辦法提供一個「和」喜歡與多個字符串搜索IN值?

回答

2

您只需在匹配查詢中指定combine運算符爲AND。匹配查詢的默認值是OR。

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