我使用以下查询查询ElasticSearch,并根据查询和其他一些不相关的数据给出结果。
GET items/_search
{
"query" :{
"match": {"code": "*7000-8002-W*"}
}
}
但如果我这样查询,我会得到正确的结果:
GET items/_search
{
"query" :{
"match": {"code": "*S6617523*"}
}
}
为什么第一个查询会返回其他一些不相关的数据?
答案 0 :(得分:1)
此行为是由于ES分析字符串的方式。在这种情况下,您需要在wildcard
的原始字段上应用code
查询,如
{
"query": {
"wildcard": {
"code.keyword": {
"value": "*7000-6000*"
}
}
}
}
Java API或对此的响应
QueryBuilders.wildcardQuery("code.keyword","*7000-6000*");
希望这有助于!!