网站首页 > 开源技术 正文
ElasticSearch模糊查询的问题
今天在遇到es查询的时候,遇到了难点,花了半天才发现问题原因。
需求是:es实现模糊查询。相当于sql中的like %像%一样。但是在开发过程中,我使用了各种分词,各种查询代码,总是实现不了。
问题:
比如:我查询切片面包可以查询出来,但是我查询切面包就查询不出来。
? 原因是es默认采用了分词机制,导致我查询的时候,切面包没有放在一个分词中,查询不到。
MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("name", name);
// Iterable<Commodity> iterable = commodityRepository.search(matchQueryBuilder);
// Iterable<Commodity> iterable = commodityRepository.search(matchQueryBuilder);
// iterable.forEach(e->list.add(e));
查询资料后,我测试下面的代码:
WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery("name", "*"+name+"*");
Iterable<Commodity> iterable = commodityRepository.search(wildcardQueryBuilder);
测试了一下,还不行。郁闷中。
字段分词器
然后我在字段属性上,加上分词器。先删除es上的数据,然后重新插入数据。
@Field(type = FieldType.Text, analyzer = "ik_max_word")
private String title; //标题
测试上面二个代码,还是没法查询出切面包的数据。
最后,我尝试删除整个索引,再重新插入数据测试一下
DELETE /commodity
整个命令就是kibaba中的删除索引命令。然后,我在字段属性中设置为keyword:
@Field(type = FieldType.Keyword)
private String name;
然后,重新插入数据,利用模糊查询代码执行:
WildcardQueryBuilder wildcardQueryBuilder = QueryBuilders.wildcardQuery("name", "*"+name+"*");
Iterable<Commodity> iterable = commodityRepository.search(wildcardQueryBuilder);
奇迹出现了,居然成功了。无论我查询什么,只要包含,就可以查询出来。终于解决了这个问题,总算松了口气。
总结
在改变了索引(文档)的属性时,原来属性为text,后来改为keyword。所以必须先删除干净索引,重新插入数据,在模糊查询。我的原因就是没有删除索引导致的。一定要记得重新生成索引才可以做到模糊查询的效果。
分享给你一张 Elasticsearch 核心知识图谱,只有对每一个知识点仔细梳理并深入理解,才能解决工作中的实际问题。关注私信回复:555 领取Java高级架构资料
感谢支持哦,认真写文章,用心做分享。个人公种浩【java耕耘者】,文章都会在里面更新,整理的资料也会放在里面。
猜你喜欢
- 2024-12-14 ES的searchAfter使用详解
- 2024-12-14 Spring Boot Data Elasticsearch 通用工具类
- 2024-12-14 SpringBoot+Vue+ES 实现仿百度全文搜索
- 2024-12-14 Spring Data JPA——多表设计、一对多、多对多、多表查询
- 2024-12-14 一文读懂SpringBoot整合Elasticsearch
- 2024-12-14 ElasticSearchRepository和ElasticSearchTemplate的使用
- 2024-12-14 Elasticsearch 在地理信息空间索引的探索和演进
- 2024-12-14 Java微服务-一套前后台全部开源的H5商城送给大家(全部开源)
- 2024-12-14 android使用greendao来保存数据
- 2024-12-14 纯干货,Spring-data-jpa详解,全方位介绍
你 发表评论:
欢迎- 05-16东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 05-16这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 05-16湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- 05-16Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- 05-16G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- 05-16DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 05-16上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- 05-16WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 最近发表
-
- 东契奇:DFS训练时喷了我很多垃圾话 我不懂他为什么比赛不这么干
- 这两球很伤!詹姆斯空篮拉杆不中 DFS接里夫斯传球空接也没放进
- 湖人自媒体调查:89%球迷希望DFS回归79%希望詹姆斯回归
- Shams:湖人得到全能球员DFS 节省了1500万奢侈税&薪金空间更灵活
- G5湖人胜率更高!詹姆斯不满判罚,DFS谈5人打满下半场:这很艰难
- DFS:当东契奇进入状态 所有防守者在他面前都像个圆锥桶
- 上一场9中6!DFS:不能让纳兹-里德这样的球员那么轻松地投三分
- WIDER FACE评测结果出炉:滴滴人脸检测DFS算法获世界第一
- 湖人自媒体调查:89%球迷希望DFS回归 79%希望詹姆斯回归
- 一觉醒来湖人苦盼的纯3D终于到位 DFS能带给紫金军多少帮助
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)