java開發中使用ES 需要注意的一些細節


        之前使用ES主要還是通過ELK去處理日志,由於項目需求,現在需要單獨使用ES進行功能拓展,於是申請了一個3節點的ES集群,與當前項目進行整合。調試過程中遇到一些問題記錄一下。

首先項目使用的Springboot版本是2.1.7 RELEASE,運維裝好的ES版本是6.6.0,就在這個版本固定的情況下進行集成。在實踐中,發現大多數問題都是版本上的不匹配出現的問題。首先來看一個官網的圖:

第一反應就是直接用同版本jar包,於是pom文件里加入es6.6.0的相關依賴,配合spring-data-elasticsearch 3.1.4.RELEASE 進行集成,寫好ElasticsearchConfig和配置文件,開始調試。這里需要注意的兩個配置文件中的細節。1.配置文件中es默認端口應該是9300而不是9200;2.clustername也需要對應好已安裝的ES對應字段。

         調試過程中發現如下報錯:java.lang.ClassNotFoundException:org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse

         查看源碼發現是ES 6.6.0版本包中沒有該類,所以還是版本上的有些沖突,把ES 6.6.0版本依賴注釋以后,發現Springboot 2.1.7 RELEASE自帶的ES版本包會加載進來,當然前提是spring-data-elasticsearch 依賴的引入,這個時候ES相關jar包版本是6.4.3的,繼續調試發現該版本下,已經無報錯。持續測試一段時間如果沒有問題,即可確認版本無誤。

         雖然這是在版本固定的情況下進行的集成,但也不難發現最常出現的問題,還是版本不匹配。有了這樣的思路,在其他版本ES環境下遇到類似情況,都可以嘗試通過這種方式去獲取線索,解決問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM