近期在Spring boot中對Elastic Search進(jìn)行了簡單的集成顽腾,參照了官方文檔衅谷,文檔推薦的是使用java rest client進(jìn)行數(shù)據(jù)庫訪問,內(nèi)容寫的還是比較清楚的别洪。
文檔地址
依賴:
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.3.1</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.3.1</version>
</dependency>
但在部署后使用時(shí)出現(xiàn)報(bào)錯(cuò):
java.lang.NoSuchMethodError: org.elasticsearch.client.Request.addParameters(Ljava/util/Map;)V
at org.elasticsearch.client.IndicesRequestConverters.indicesExist(IndicesRequestConverters.java:481) ~[elasticsearch-rest-high-level-client-7.3.1.jar:7.3.1]
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1450) ~[elasticsearch-rest-high-level-client-7.3.1.jar:7.3.1]
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1439) ~[elasticsearch-rest-high-level-client-7.3.1.jar:7.3.1]
at org.elasticsearch.client.IndicesClient.exists(IndicesClient.java:784) ~[elasticsearch-rest-high-level-client-7.3.1.jar:7.3.1]
接下來查看源碼飘弧,發(fā)現(xiàn)Request的addParameters需要傳遞的參數(shù)位(String,String),而調(diào)用時(shí)傳遞的為Map邪狞。
后來bing搜了一下祷蝌,發(fā)現(xiàn)有人遇到了同樣的問題。
elasticsearch的issue
其實(shí)很簡單帆卓,在Spring boot中需要顯式地使用一些傳遞依賴項(xiàng)巨朦,因?yàn)镾pring boot聲明了6.4版的es:
<properties>
<elasticsearch.version>7.3.1</elasticsearch.version>
</properties>