2018-10 更新:
剛剛把spring data elasticsearch 升級到了3.1.1, 適配Elasticsearch 6.2.2。
spring 也在準(zhǔn)備轉(zhuǎn)向Rest 客戶端做準(zhǔn)備了,不過目前這套架構(gòu)用transport client還能工作。
之前采用SSH框架,全文檢索實現(xiàn)從solr到lucene,最后到elasticsearch。沿用hibernate search, 經(jīng)過2年的過度,前端Spring 逐漸去掉了Struts, 現(xiàn)在又直接去掉了hibernate search, hibernate orm 變成了幕后的JPA底層實現(xiàn)。
主要原因是hibernate 和jboss捆綁太緊密,而spring boot確實方便。
這次切換后來總結(jié)下中間遇到的坑吧:
Spring JPA elasticsearch 3.0支持 elasticsearch 5.5 , 不過官網(wǎng)的客戶端例子只提供了elasticsearch java api 的 node client 連接方式,還是采用內(nèi)置elasticsearch 服務(wù)器的方式。這肯定不能用于生產(chǎn)系統(tǒng)。所以第一步:從node client 換到 transportclient方式,連接到elasticsearch。
可能是我elasticsearch不熟,這個坑有點大。
1, transportclient 不支持xpack,連接錯誤也不提示是xpack拒絕。
2,elasticsearch 5.5 的docker鏡像 默認(rèn)帶 xpack, 使用參數(shù)xpack.security.enabled = false 居然不生效!
3, bin/elasticsearch-plugin remove x-pack 能卸載xpack, 卸載后要重啟,重啟后還有一堆參數(shù)等著調(diào)整。所以到elasticsearch 6 之后提供了額外的卸載命令。可是Spring JPA目前最高支持elasticsearch 5.6.8.
最后只好到處找到一個不帶xpack的安裝包,終于一切暢通了,開始享受elasticsearchRepository 帶來的便捷,想怎么查就怎么查!