2018-10 更新:
刚刚把spring data elasticsearch 升级到了3.1.1, 适配Elasticsearch 6.2.2。
spring 也在准备转向Rest 客户端做准备了,不过目前这套架构用transport client还能工作。
之前采用SSH框架,全文检索实现从solr到lucene,最后到elasticsearch。沿用hibernate search, 经过2年的过度,前端Spring 逐渐去掉了Struts, 现在又直接去掉了hibernate search, hibernate orm 变成了幕后的JPA底层实现。
主要原因是hibernate 和jboss捆绑太紧密,而spring boot确实方便。
这次切换后来总结下中间遇到的坑吧:
Spring JPA elasticsearch 3.0支持 elasticsearch 5.5 , 不过官网的客户端例子只提供了elasticsearch java api 的 node client 连接方式,还是采用内置elasticsearch 服务器的方式。这肯定不能用于生产系统。所以第一步:从node client 换到 transportclient方式,连接到elasticsearch。
可能是我elasticsearch不熟,这个坑有点大。
1, transportclient 不支持xpack,连接错误也不提示是xpack拒绝。
2,elasticsearch 5.5 的docker镜像 默认带 xpack, 使用参数xpack.security.enabled = false 居然不生效!
3, bin/elasticsearch-plugin remove x-pack 能卸载xpack, 卸载后要重启,重启后还有一堆参数等着调整。所以到elasticsearch 6 之后提供了额外的卸载命令。可是Spring JPA目前最高支持elasticsearch 5.6.8.
最后只好到处找到一个不带xpack的安装包,终于一切畅通了,开始享受elasticsearchRepository 带来的便捷,想怎么查就怎么查!