当我拨打此网址时:
http://192.168.x.x:9200/identities/work/_search?q=joh*
ES正在返回有限的(5)一组匹配,从人名John和Johnny等的一些索引开始。这似乎是正确的结果。
但是当我将这个JSON发送给ES时:
{
"query": {
"match": {
"_all": "joh*"
}
}
}
我得到的结果甚至无法用逻辑解释。看起来很随机,也有很多索引(数百,不是很多johns和johnny的;)
这不等同于上面提到的网址吗?我做错了什么?
答案 0 :(得分:0)
当您调用以下网址时,ES隐含的是创建query_string
查询而不是match
查询
http://192.168.x.x:9200/identities/work/_search?q=joh*
因此等效的JSON查询将是:
{
"query": {
"query_string": {
"query": "joh*"
}
}
}
此外,match
查询不像joh*
那样处理通配符,*
被视为真实字符,而不是通配符。