ElasticSearch使用查询字符串搜索并验证另一个字段

时间:2018-10-17 14:27:44

标签: python-3.x elasticsearch

我需要将以下SQL查询转换为ES查询:

SELECT * 
FROM SKILL 
WHERE SKILL.name LIKE 'text' and SKILL.type = 'hard'

我已经使用python3的“ elasticsearch”库尝试了以下操作:

query = self.__es.search(index="skills", 
    body={"from" : skip, "size" : limit, 
    "query": 
        {"query_string": 
            {"query": 'text'}
        })

,效果很好。但是现在,我不知道如何检查字段“类型”是否等于“硬”。 我该怎么办?

谢谢。

1 个答案:

答案 0 :(得分:0)

您必须使用布尔查询,在“必须”部分中放置两个查询,全文查询一个,术语查询一个:

{
    "query": {
        "bool": [{
            "match": {
                "name": "this is a test"
            }
        }, {
            "term": {
                "type": "hard"
            }
        }]
    }
}

在此之前,您必须将type属性存储为关键字字段。