我必须找到具有字符串的匹配文档,例如:在某些“键”范围内的字符串:“
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"
}
}
]
}
}
})
问题内容: 我必须找到具有字符串的匹配文档,例如:在某些“键”范围内的字符串:“ sky”。当我编写单独的匹配和范围查询时,我从ES获得输出,但是合并在一起时会抛出异常。 范围查询: 匹配查询: 组合查询: 组合查询在执行时会引发错误: 引发HTTP_EXCEPTIONS.get(状态代码,TransportError)(状态代码,error_message,Additional_info)ela
问题内容: 我有以下 匹配 查询字符串: 我想它的意思是,但实际上它能执行。 然后我尝试了 术语 查询字符串: 它执行,显示 术语 查询通过数组支持多个OR条件。 我很好奇为什么 匹配 查询不支持通过数组的 OR 条件?并且它不显示任何语法错误。 问题答案: 该查询仅支持要指定的单个字符串值。官方文档中没有明确指定它,但是如果您愿意阅读的源代码,则可以看到,在解析字段时,解析器将跳过标记来分隔数组
问题内容: 我想查询的数据是和是。编写常用的SQL很容易: 但是,对Elasticsearch进行查询对我来说并不容易。 首先,我查询了: 结果是我所期望的。 然后,我查询了: 它也运作良好。 但是我无法使用和操作将2个条件连接在一起的查询。如何将这两个匹配查询合并为一个使用和操作? 问题答案: 您需要的是布尔查询,您可以在其中输入所有单个查询: (我无法测试查询,这可能是错误的,但是bool-q
我是Elasticsearch新手,对匹配查询的工作方式感到困惑。我有以下映射: 我批量导入了以下文档 我验证了所有文档都已成功加载。然后我执行匹配查询: 它只返回#1文档。我在这里感到困惑。为什么它不返回所有三个文档?我应该使用什么查询来返回这三个文档,因为它们在字段中都有“quiet”根单词? 谢谢和问候。
问题内容: 我存储的文档包含两个字段,即startDate和endDate。我想使用输入日期运行Elastic查询,并返回其startDate和endDate包含该日期的所有文档。例如, 如果我输入的日期为2015-01-02,则此文档应出现在结果中,因为输入的日期在开始日期和结束日期字段的范围内。 我可以使用一个字段进行范围查询,但由于范围仅接受一个,因此我不知道如何使用两个日期字段: 我还需要
我正在努力为弹性搜索制定正确的API搜索调用,这将要求在过去1小时内获得我想要的ipv4address。 第一次尝试: {“error”:{“root\u cause”:[{“type”:“parsing\u exception”,“reason”:“未知键,用于[范围]中的START\u对象。”,“line”:10,“col”:12}],“type”:“parsing\u exception”,