在单个ElasticSearch查询中组合文本模式和数字大于比较

时间:2014-04-09 18:28:30

标签: elasticsearch

我知道如何在ElasticSearch中搜索完全匹配:

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

但我想做一个大于比较的数字,并将它与文本模式搜索结合起来。在SQL中我会写这个:

WHERE GAIN > 10 AND DESCRIPTIONLIKE '%good%'

如何在ElasticSearch中执行等效操作?

1 个答案:

答案 0 :(得分:1)

要搜索GAIN > 10,您需要Range query

要搜索DESCRIPTION LIKE '%good%',您需要确保以对其进行标记的方式分析描述字段;然后你可以在它上面使用常规匹配查询,它会找到包含单词good(但不是goodbye的文档 - 取决于分析器,但我认为你想要字边界标记化)

要结合这两个条件,您需要Bool query