由于ES2.X的client使用的是jetty3,和系统使用的jetty4不兼容,并且看到最新的spring-data-elasticsearch支持了ES5.5.1,于是尝试升级:
step1. JAR升级,很简单,更换下仓库类名称即可
step2. 本人使用了elasticsearch-analysis-ik分词器,需要重新下载最新的elasticsearch-analysis-ik进行编译打包,替换原来的目录即可
step3. 项目刷新后出现错误了,有以下几个错误:
1)FieldType.String 不存在,看了下文档,替换为FieldType.keyword。
2)Operator.AND不存在,看了下文档,类的位置不一样,原来是
org.elasticsearch.index.query.MatchQueryBuilder.Operator
现在是
org.elasticsearch.index.query.Operator
step4.编译不出问题了,启动一次,报无法初始化bean,仔细一看,原来是报类实现找不到。最后发现RepositoryConfigurationExtensionSupport的接口实现不一致,最后仔细一看POM定义:
<springdata.commons>2.0.0.BUILD-SNAPSHOT</springdata.commons>
疯掉了,原来是必须使用2.0版本的接口定义啊,难不成整个spring-data体系全部都要上到SNAPSHOT版本?
仔细看了一边,确实是整个体系都上到2.0RC2了,没办法,只能把JPA,COMMONS也升级上去。记得MAVEN库要添加milestone的地址:
maven {
url 'https://repo.spring.io/libs-milestone'
}
不想直连spring的库,将几个库类全部下载到nexus私库了。。
step4. 疯掉了,把COMMONS和JPA也升级到RC2了,然后。。。然后又发现SPRING-BEANS又不匹配了,即使升级到RELEASE的最后一个版本也一样,估计SPRING也是基于什么SNAPSHOT版本开发的。。。
3个小时后最后放弃。。
算了,还是继续等spring-data 2.0体系最终release.
elasticsearch client的自己改下源码还是可以搞定。