Springboot+ElasticSearch整合使用ElasticsearchRepository字段名称为大写时的处理方法

一、问题起因:

错误信息:org.springframework.data.mapping.PropertyReferenceException: No property ... ! Did you mean ...?

如下图所示,springboot整合es时,在es中的字段名称为大写,此时使用ElasticsearchRepository自动生成查询方法时是有问题的。因为生成的方法采用的是驼峰命名规则,如图中使用"findBySTORETIME"接口,则默认字段值为"sTORETIME",但我们的字段却为"STORETIME",所以产生错误!

二、处理方法:

在DAO接口层,接口名称上添加"@Query"注解,如下图所示: 

@Query("{\"bool\" : {\"must\" : {\"term\" : {\"STORETIME\" : \"?0\"}}}}")  

注解中,规定了字段使用大写表示,则解决了上述问题。其中,"?0"代表第一个参数storetime,后面以此类推

@JsonProperty("DREREFERENCE")的使用,是为了将ES返回的字段内容与字段对应,否则返回字段默认为小写,是不能存储在bean中的

posted @ 2019-12-25 09:29  佐佐木绯世  阅读(1935)  评论(0)    收藏  举报