es模糊查询的问题

在使用Elasticsearch进行模糊查询时遇到困难,发现原因是ES的默认分词机制。通过调整字段属性为keyword,删除并重新创建索引,最终成功实现了类似SQL的LIKE查询功能。
摘要由CSDN通过智能技术生成

es模糊查询的问题

今天在遇到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 = c
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值