2014-04-09 81 views
0

我知道如何尋找在ElasticSearch精確匹配合並文本模式和數值大於比較:單一ElasticSearch查詢

GET world/country/_search 
{ 
    "query": { 
     "match": { 
      "GAIN" : "10" 
     } 
    } 
} 

但我想做一個數值大於比較,並將其與文本模式搜索結合起來。在SQL中,我會這樣寫:

WHERE GAIN > 10 AND DESCRIPTIONLIKE '%good%' 

如何在ElasticSearch中執行相同操作?

回答

1

要搜索GAIN > 10您需要一個Range query

要搜索DESCRIPTION LIKE '%good%',您需要確保以對其進行標記的方式對描述字段進行分析;那麼你可以使用一個普通的匹配查詢,它會查找包含單詞good(但不是goodbye - 取決於分析器,但我假設你想要字邊界標記化)的文檔。

要結合這兩個條件,你需要一個Bool query

+0

範圍查詢是我需要的。但不能理解搜索字符串,即第二個,你可以幫助寫查詢 –

+0

這是一個普通的匹配查詢:'{「match」:{「description」:「good」}}',但你必須確保描述字段是_分析_。看看http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html – Avish