Es spring data jpa 修改連接配置


使用Spring Data Elasticsearch連接elasticsearch時,正常情況下只需要在application.properites文件中添加如下配置即可連接:

spring.data.elasticsearch.repositories.enabled = true spring.data.elasticsearch.cluster-name = es-cluster spring.data.elasticsearch.cluster-nodes = 127.0.0.1:9300 

以看到Spring Data Elasticsearch連接elasticsearch很簡單。

上面說的是正常情況,但是有些情況下連接需要驗證。比如安裝x-pack(舊版本的Shield、Marvel等)之后,訪問elasticsearch就需要驗證(未開啟匿名訪問),默認用戶名/密碼是:elastic/changeme,參考官方文檔了解更多細節。

如果不做相應的修改就會報錯

org.elasticsearch.transport.RemoteTransportException: [i9Vl_pG][10.111.27.202:9300][cluster:monitor/nodes/liveness] Caused by: org.elasticsearch.ElasticsearchSecurityException: missing authentication token for action [cluster:monitor/nodes/liveness] at org.elasticsearch.xpack.security.support.Exceptions.authenticationError(Exceptions.java:36) ~[na:na] at org.elasticsearch.xpack.security.authc.DefaultAuthenticationFailureHandler.missingToken(DefaultAuthenticationFailureHandler.java:74) ~[na:na] at org.elasticsearch.xpack.security.authc.AuthenticationService$AuditableTransportRequest.anonymousAccessDenied(AuthenticationService.java:541) ~[na:na] at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.lambda$handleNullToken$17(AuthenticationService.java:357) ~[na:na] at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.handleNullToken(AuthenticationService.java:362) ~[na:na] at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.consumeToken(AuthenticationService.java:277) ~[na:na] at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.lambda$extractToken$7(AuthenticationService.java:249) ~[na:na] at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.extractToken(AuthenticationService.java:266) ~[na:na] at org.elasticsearch.xpack.security.authc.AuthenticationService$Authenticator.lambda$null$0(AuthenticationService.java:201) ~[na:na] at org.elasticsearch.action.ActionListener$1.onResponse(ActionListener.java:60) ~[elasticsearch-5.6.8.jar:5.6.8] at org.elasticsearch.xpack.security.authc.TokenService.getAndValidateToken(TokenService.java:239) ~[na:na] 

在這樣的情況下,Spring Data Elasticsearch 該如何設置才能連接到 elasticsearch?目前最新版的 Spring Data Elasticsearch 2.1.6.Release 還不能通過配置的形式來完成。那要如何做,更換TransportClient即可!

修改依賴

<repository> <id>elasticsearch-releases</id> <url>https://artifacts.elastic.co/maven</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> ... <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <exclusions> <exclusion> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>x-pack-transport</artifactId> <version>5.5.0</version> </dependency> 

x-pack-transport 的版本號保持與elasticsearch一致。

重新實例化 TransportClient

@Bean public TransportClient transportClient() throws UnknownHostException { TransportClient client = new PreBuiltXPackTransportClient(Settings.builder() .put("cluster.name", "es-cluster") .put("xpack.security.user", "elastic:changeme") .build()) .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("127.0.0.1"), 9300)); return client; } 

就這么多,之前屬性文件中的配置可以刪除了,這樣就能保證連接驗證通過。

轉載至https://my.oschina.net/kipeng/blog/1800523


免責聲明!

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



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