Elasticsearch 默认不考虑字符串字段,没有给出正确的匹配结果
Elastic search not considering as string field by default and not giving proper matching results
我正在使用以下查询查询 ElasticSearch,它根据查询提供结果以及一些其他不相关的数据。
GET items/_search
{
"query" :{
"match": {"code": "*7000-8002-W*"}
}
}
但是如果我这样查询,我会得到正确的结果:
GET items/_search
{
"query" :{
"match": {"code": "*S6617523*"}
}
}
为什么第一个查询returns是一些其他不相关的数据?
此行为是由于 ES 分析字符串的方式所致。在这种情况下,您需要在 code
的原始字段上应用 wildcard
查询,例如
{
"query": {
"wildcard": {
"code.keyword": {
"value": "*7000-6000*"
}
}
}
}
Java API 或者对此的回应是
QueryBuilders.wildcardQuery("code.keyword","*7000-6000*");
希望对您有所帮助!!
我正在使用以下查询查询 ElasticSearch,它根据查询提供结果以及一些其他不相关的数据。
GET items/_search
{
"query" :{
"match": {"code": "*7000-8002-W*"}
}
}
但是如果我这样查询,我会得到正确的结果:
GET items/_search
{
"query" :{
"match": {"code": "*S6617523*"}
}
}
为什么第一个查询returns是一些其他不相关的数据?
此行为是由于 ES 分析字符串的方式所致。在这种情况下,您需要在 code
的原始字段上应用 wildcard
查询,例如
{
"query": {
"wildcard": {
"code.keyword": {
"value": "*7000-6000*"
}
}
}
}
Java API 或者对此的回应是
QueryBuilders.wildcardQuery("code.keyword","*7000-6000*");
希望对您有所帮助!!