2014-04-09 82 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