1、问题:es文档中的某个属性值name的值如下所示
name":"catalog=Catalog(value=699015935012372480, displayName=/默认分组),
status=3, updaterName=admin, updateTime=2023-02-01
14:33:17)status:已发布”
通过java模糊查询的api(QueryBuilders.fuzzyQuery)查询name为“已”的时候可以查询,查询为“已发布”的时候查询不出来。
2、原因:索引中没设置分词器
ps:索引中没设置分词器
ps:索引中设置分词器后
3、解决方案
3.1 给索引添加分词器(删除索引后,然后重新建立索引并设置分词器,如2中图所示)
3.2 换成QueryBuilders.matchPhraseQuery()的api(中文模糊查询推荐使用此api)ps:matchPhraseQuery() 与 matchQuery()区别
matchPhraseQuery():使用matchPhraseQuery时,不会被分词器分词,而是直接以一个短语的形式查询;
matchQuery():在执行查询时,搜索的词会被分词器分词;
4、查看某索引的信息(比如是否用到分词器),代码如下文章来源:https://www.toymoban.com/news/detail-786525.html
public class GetIndex {
// index:log的名称
private static final Logger log = Logger.getLogger("index");
public static void main(String[] args) throws IOException {
// 创建客户端对象
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("ip", 端口, "http"))
);
//1、查看索引
// 请求对象
GetIndexRequest request = new GetIndexRequest("user");
// 发送请求
GetIndexResponse response = client.indices().get(request, RequestOptions.DEFAULT);
// 响应信息
log.info("aliases: = " + response.getAliases()); // 别名
log.info("mappings: = " + response.getMappings()); // 映射
log.info("settings: = " + response.getSettings()); // 设置信息
// 关闭资源
client.close();
}
}
借鉴地址文章来源地址https://www.toymoban.com/news/detail-786525.html
到了这里,关于elasticSearch7版本文档中文属性模糊查询不准确的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!