如何使用python在一个elasticsearch查询中包含范围和匹配查询?
我必须找到具有字符串的匹配文档,例如:在某些“键”范围内的字符串:“
sky”。当我编写单独的匹配和范围查询时,我从ES中获得了输出,但是合并在一起时会抛出异常。
范围查询:
res = es.search(index="dummy", body={"from":0, "size":0,"query": {"range":{"key":{"gte":"1000"}}}})
匹配查询:
res = es.search(index="dummy", body={"from":0, "size":0,"query": {"match":{"word":"sky"}}})
组合查询:
res = es.search(index="dummy", body={
"from":0,
"size":0,
"query": {
"range":{
"key":{"gte":"1000"}
}
},
"match":{"word":"sky"}
})
组合查询在执行时会引发错误:
引发HTTP_EXCEPTIONS.get(状态码,TransportError)(状态码,error_message,Additional_info)elasticsearch.exceptions.RequestError:TransportError(400,u’parsing_exception’,u’[match]中START_OBJECT的未知键。’)
合并两个查询的正确方法是什么?
回答:
您需要使用bool/must
查询来做到这一点
res = es.search(index="dummy", body={ "from": 0,
"size": 0,
"query": {
"bool": {
"must": [
{
"range": {
"key": {
"gte": "1000"
}
}
},
{
"match": {
"word": "sky"
}
}
]
}
}
})
以上是 如何使用python在一个elasticsearch查询中包含范围和匹配查询? 的全部内容, 来源链接: utcz.com/qa/430688.html