SpringDataElasticSearch查询时忽略大小写

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

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

 

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

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

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

处理方式如链接

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

去官网搜索

SpringDataElasticSearch查询时忽略大小写_第1张图片

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

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

不得其精髓。

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

将Field的属性设置为

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

查询时

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

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

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

 

 

 

你可能感兴趣的:(SpringDataElasticSearch查询时忽略大小写)