我搜索ElasticSearch与以下匹配查询,这是不是给我的确切匹配,而不是它给一些更多的不相关的匹配也。
我正在使用ElasticSearch6.2.3
请在下面查找我的查询
get items/_search
{
"query" : {
"match" : {
"code" : "7000-8900"
}
}
}
请查找从match
查询中获取的响应
7000-8900
7000-8002-WK
7000-8002-W
我搜索ElasticSearch与以下匹配查询,这是不是给我的确切匹配,而不是它给一些更多的不相关的匹配也。
我正在使用ElasticSearch6.2.3
请在下面查找我的查询
get items/_search
{
"query" : {
"match" : {
"code" : "7000-8900"
}
}
}
请查找从match
查询中获取的响应
7000-8900
7000-8002-WK
7000-8002-W
4条答案
按热度按时间vfwfrxfs1#
您必须使用
term
查询,而不是match
,如文件所述:术语查询查找包含倒排索引中指定的确切术语的文档
因此,您必须更改查询,如下所示:
如果没有得到任何结果,有两种可能:
注意:如果Map正确且代码是术语字段,则可以使用“code”。如果Map是自动的且Map将其识别为文本,则需要使用“code.keyword”
mf98qq942#
我在匹配中遇到了同样的问题,所以我试着使用term。但这是一个不好的做法。ES说,我们不应该使用term进行字符串匹配。
如果将字段指定为关键字,则匹配将执行完全匹配。
如果您没有将字段定义为关键字,您仍然可以这样进行查询:
ztmd8pv53#
您可以尝试此方法此查询返回完全匹配记录
vd2z7a6w4#