我们在进行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()));
将查询字段替换为全体换为小写,就可以查询到忽略大小写的数据了,查询结果一致。
但始终觉得这种方式不是那么优雅,如小伙伴有更好的方式,欢迎留言讨论。