SpringDataElasticSearch查询时忽略大小写

我们在进行ElasticSearch查询时通常字段都是以

@Field(type = FieldType.keyword) 
private String info;

 

标注,再查询时,会发现条件是区分大小写的。

这样再mysql与elasticSearch之间进行切换的时候就会发现查询结果不一致的情况。

百度n久,都是针对9200的http接口请求的方式。

处理方式如链接

https://www.cnblogs.com/romicLord/p/8669328.html

去官网搜索

也只有类似JPA的方式可以进行忽略大小写查询。

但更多情况使用的是elasticSearchTemplate进行查询。

不得其精髓。

于是使用了一种替代的解决方法,

将Field的属性设置为

@Field(type = FieldType.text)
private String info;

查询时

boolQueryBuilder.filter(termQuery("info", dto.info().toLowerCase()));

将查询字段替换为全体换为小写,就可以查询到忽略大小写的数据了,查询结果一致。

但始终觉得这种方式不是那么优雅,如小伙伴有更好的方式,欢迎留言讨论。

 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值