2014-05-15 39 views
4
curl localhost:9200/tweet/posts/_search -d '{ 
    "query": { 
    "and": [ 
     { 
     "wildcard": { 
      "_all": "*pet*" 
     } 
     }, 
     { 
     "wildcard": { 
      "_all": "*rom*" 
     } 
     } 
    ] 
    } 
}' 

這給了我一個解析異常。我想用AND條件運行MySQL like(%test%)類型的查詢。在彈性搜索中還有其他的好方法嗎?elasticsearch中的一個查詢中有多個通配符

回答

6

也許這樣?

{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "wildcard": { 
      "_all": { 
       "value": "*pet*" 
      } 
      } 
     }, 
     { 
      "wildcard": { 
      "_all": { 
       "value": "*rom*" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

如果我必須在選定的字段而不是_all上運行相同的查詢,那麼我該怎麼做。我必須在這些字段上只搜索[「姓名」,「地址」,「聯繫人」,「郵編」]。請幫幫我。 – user2742004

+0

我相信你需要將「必須」改爲「應該」,然後爲每個字段添加一個通配符。至少有一個「應該」需要匹配記錄才能被返回(如果你沒有必要條款)。 – Alcanzar

相關問題