springmvc|springmvc 集成 Spring Data Elasticsearch 遇到的坑

  • 2018年08月15日记录
由于项目需要用到Elasticsearch 开始研究在项目中集成Elasticsearch 最开始参考过其他项目,用的是Elasticsearch的集成包,嫌他的配置链接等还要在代码中写,不如xml配置来的方便,个人喜欢配置跟代码分离。最后选择了Spring Data Elasticsearch https://github.com/spring-projects/spring-data-elasticsearch
发布的版本是 3.0.9.RELEASE 对应的elasticsearch 版本是 5.5.0
遇到的几个坑在这里记录一下:
  1. spring版本问题,由于项目遗留问题,当时用的是3.0.5.RELEASE 集成 Spring Data Elasticsearch
    3.0.9.RELEASE 之后 在代码中按照文档介绍使用,例如定义Respository:
//定义接口 public interface ESLogRespositoryextends ElasticsearchCrudRepository{ ... } //使用的时候 @Autowired private ESLogRespository esLogRespository;

虽然按照文档说明这样使用,然而在实际用的时候发现根本无法注入实例,因为ESLogRespository没有对应的实现类(文档中并没有说要实现类),尝试过在ESLogRespository上加各种注解都不行,搜索一番后也没有这方面的说明,尝试更新spring到4后仍然不行,Stack Overflow上求助后有人提出升级到5才行,其实之前我也试过把spring升级到5,可能是由于缓存加上用到的依赖包很多(项目遗留),还有一些依赖没有升级等等并没有解决问题,后来下定决心整理每一个依赖包去掉无用的依赖把spring升级到5.0.4.RELEASE,对应的hibernate等也都做了升级,才真正解决问题。期间还试过把Spring Data Elasticsearch 版本降到1.3.0.RELEASE 版(各个版本也试过)也确实可以解决spring低版本问题,但是又带来其他问题,与下文类似。
  1. elasticsearch版本问题,刚开始的时候部署的是最新版6以上,在项目中死活连不上,因为有最低版本要求,elasticsearch 5.6以上 无奈只好把 elasticsearch 换成了 5.6.9版本。
【springmvc|springmvc 集成 Spring Data Elasticsearch 遇到的坑】虽然问题解决了,但其实并不是那么的满意,使用elasticsearch是由于一些功能上的需要,然而多数时间却浪费在了集成和配置上,这就是项目变的越来越大集成的包越来越多导致的一些问题,轻易不能改动其中的一些依赖,害怕会有什么问题,用到新依赖时与旧框架之间可能存在的冲突问题等等,这些总需要我们做取舍,当然即使最后不解决spring版本的问题,也可以只用elasticsearch自己的包而不用Spring Data Elasticsearch集成的东西,只是个人原因不喜欢绕过问题,才带来了这些问题。

    推荐阅读