Elasticsearch 中基于wildcardQuery的中文模糊查询失效
es内容{"took" : 0,"timed_out" : false,"_shards" : {"total" : 6,"successful" : 6,"skipped" : 0,"failed" : 0},"hits" : {"total" : 5,"max_score" : 1.0,"hits" : [{"_index" : "person_award",...
·
es内容
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 6,
"successful" : 6,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : 5,
"max_score" : 1.0,
"hits" : [
{
"_index" : "person_award",
"_type" : "_doc",
"_id" : "0",
"_score" : 1.0,
"_source" : {
"id" : 0,
"awardName" : "string",
"awardTime" : "string",
"isDel" : 0
}
},
{
"_index" : "person_award",
"_type" : "_doc",
"_id" : "3",
"_score" : 1.0,
"_source" : {
"id" : 3,
"awardName" : "你好呀",
"awardTime" : "string",
"isDel" : 0
}
},
{
"_index" : "person_award",
"_type" : "_doc",
"_id" : "4",
"_score" : 1.0,
"_source" : {
"id" : 4,
"awardName" : "你",
"awardTime" : "string",
"isDel" : 0
}
},
{
"_index" : "person_award",
"_type" : "_doc",
"_id" : "5",
"_score" : 1.0,
"_source" : {
"id" : 5,
"awardName" : "好",
"awardTime" : "string",
"isDel" : 0
}
},
{
"_index" : "person_award",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"id" : 1,
"awardName" : "编程的思想",
"awardTime" : "编程的思想",
"isDel" : 0
}
}
]
}
}
如下写法,英文查询没问题,中文查询有问题。中文查询的问题体现在,单个字查询,没问题,多个字查询,则不支持。例如输入好,可以查到对应的记录。输入你好或编程,则查到的结果为空。
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.wildcardQuery("awardName", "*" + personAward.getAwardName() + "*"))
.build();
List<PersonAward> holidaysList = elasticsearchTemplate.queryForList(searchQuery, PersonAward.class);
改成如下写法,英文、中文查询,都没有问题。主要区别,是在字段后面加了一个keyword。
SearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(QueryBuilders.wildcardQuery("awardName.keyword", "*" + personAward.getAwardName() + "*"))
.build();
List<PersonAward> holidaysList = elasticsearchTemplate.queryForList(searchQuery, PersonAward.class);
时间有限,没仔细定位原因。
参考文档
Elasticsearch 中基于wildcardQuery的模糊查询失效_bigbearxyz的博客-CSDN博客
ElasticSearch 模糊查询 wildcard 的一些问题_小甄笔记的博客-CSDN博客
ElasticSearch 标准方法QueryBuilders.wildcardQuery(“name.keyword“,“*xxxx*“)模糊查询查不出结果_yuke98727的博客-CSDN博客
更多推荐
已为社区贡献3条内容
所有评论(0)