spring boot 整合 elasticsearch 5.x


spring boot與elasticsearch集成有兩種方式。一種是直接使用elasticsearch。一種是使用data中間件。

本文只指針使用maven集成elasticsearch 5.x,以及使用spring-boot-starter-data-elasticsearch中間件的情況。不包含以上兩種情況請忽略。

 

第一種方式,本來沒什么好說的。新建一個maven項目,引入spring boot相關依賴,再導入elasticsearch的依賴。但是,問題出現了:

依賴:

<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.2.1</version>
</dependency>

 

得到的jar包:

導入的是5.x的版本,最終得到的2.x的版本。lucene也是5.x版本。可能有的人會說,應該顯示指定elasticsearch版本啊。

首先,在transport的項目中已經引入了es的依賴。不需在項目中重復引入。

 

其次,在非spring boot的項目中,只引入transport就可以了。

 

 那么,問題只能是出在spring boot上面。

后來檢查發布引入了<parent>,spring boot會自動選擇最合適的版本進行添加。

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath />
</parent>

找到spring boot 1.5.3.RELEASE的源碼,https://github.com/spring-projects/spring-boot/blob/1.5.x/spring-boot-dependencies/pom.xml。確實在這個版本中,引入的是elasticsearch2.x。因為使用了parent,所以,父級的依賴優先級最高。所以直接下載了spring boot 1.5.3.RELEASE所依賴的版本。而非子依賴的版本。

 https://github.com/spring-projects/spring-boot/blob/1.5.x/spring-boot-dependencies/pom.xml

 那么要想到spring boot中引入es的5.x版本,兩種方式,第一種, A:顯式引入es依賴,或者,B:覆蓋掉spring boot的es版本。第二種,C:去掉<parent>依賴,手動添加spring-boot的依賴。三個選項的關系:(A||B)||(C)。

    <properties> 
        <elasticsearch.version>5.4.3</elasticsearch.version>
    </properties>

或者

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>5.4.3</version>
    </dependency>

 

第二種方式。好消息是spring已經正式發布版本支持es 5.0版本了。

 

spring data elasticsearch elasticsearch
3.0.0.RC2 5.5.0
3.0.0.M4 5.4.0
2.0.4.RELEASE 2.4.0
2.0.0.RELEASE 2.2.0
1.4.0.M1 1.7.3
1.3.0.RELEASE 1.5.2
1.2.0.RELEASE 1.4.4
1.1.0.RELEASE 1.3.2
1.0.0.RELEASE 1.1.1


不過,發布才不到一個月,直接用maven還下載不了。需要手動。

 

壞消息是,spring boot集成了與elasticsearch 5.x的版本,但還算不上正式發布。最新的正式版本只支持到2.4。

spring data elasticsearch elasticsearch
2.0.4.RELEASE 2.4.0
2.0.0.RELEASE 2.2.0
1.4.0.M1 1.7.3
1.3.0.RELEASE 1.5.2
1.2.0.RELEASE 1.4.4
1.1.0.RELEASE 1.3.2
1.0.0.RELEASE 1.1.1

在非正式的版本中,jdk9endpoint-infrastructure 這兩個branches中,使用的是es 5.x版本。然而,尷尬的是,不久前,這兩個版本都被打上了紅叉。

想嘗鮮的朋友,也可以去看一下最新的發布版本,2.0以上的都是使用了es 5.x版本。不過,不知道是使用的哪個branches發布,慎重使用。

以上版本,都剛發布不久,還沒有被maven倉庫收錄。如果想使用,只能把代碼拉到本地,編譯,放入自己的倉庫。不過,在可期的未來應該會有穩定的使用es 5.0的spring boot版本發布。

 

 

 

 

 


免責聲明!

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



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