spring Sping Boot 应用程序连接到Elasticsearch错误连接已关闭

qybjjes1  于 2024-01-05  发布在  Spring
关注(0)|答案(1)|浏览(137)

我正在尝试一个简单的例子,通过连接Sping Boot 应用程序到elasticsearch数据库,我已经设置了如下配置

  1. @Configuration
  2. public class ElasticSearchConfig extends ElasticsearchConfiguration {
  3. @Override
  4. public ClientConfiguration clientConfiguration() {
  5. return ClientConfiguration.builder()
  6. .connectedTo("localhost:9200")
  7. .build();
  8. }
  9. }

字符串
Springboot版本:3.2.0
Elasticsearch版本:8.11.1
java :21人
我收到以下异常,无法示例化ElasticSearch Repository

  1. aused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository]: Constructor threw exception
  2. at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:223) ~[spring-beans-6.1.1.jar:6.1.1]
  3. at org.springframework.data.repository.core.support.RepositoryFactorySupport.lambda$instantiateClass$5(RepositoryFactorySupport.java:571) ~[spring-data-commons-3.2.0.jar:3.2.0]
  4. at java.base/java.util.Optional.map(Optional.java:260) ~[na:na]
  5. at org.springframework.data.repository.core.support.RepositoryFactorySupport.instantiateClass(RepositoryFactorySupport.java:571) ~[spring-data-commons-3.2.0.jar:3.2.0]
  6. at org.springframework.data.repository.core.support.RepositoryFactorySupport.getTargetRepositoryViaReflection(RepositoryFactorySupport.java:536) ~[spring-data-commons-3.2.0.jar:3.2.0]
  7. at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactory.getTargetRepository(ElasticsearchRepositoryFactory.java:79) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  8. at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:317) ~[spring-data-commons-3.2.0.jar:3.2.0]
  9. at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.lambda$afterPropertiesSet$5(RepositoryFactoryBeanSupport.java:279) ~[spring-data-commons-3.2.0.jar:3.2.0]
  10. at org.springframework.data.util.Lazy.getNullable(Lazy.java:135) ~[spring-data-commons-3.2.0.jar:3.2.0]
  11. at org.springframework.data.util.Lazy.get(Lazy.java:113) ~[spring-data-commons-3.2.0.jar:3.2.0]
  12. at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:285) ~[spring-data-commons-3.2.0.jar:3.2.0]
  13. at org.springframework.data.elasticsearch.repository.support.ElasticsearchRepositoryFactoryBean.afterPropertiesSet(ElasticsearchRepositoryFactoryBean.java:69) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  14. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1822) ~[spring-beans-6.1.1.jar:6.1.1]
  15. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1771) ~[spring-beans-6.1.1.jar:6.1.1]
  16. ... 44 common frames omitted
  17. Caused by: org.springframework.dao.DataAccessResourceFailureException: Connection is closed
  18. at org.springframework.data.elasticsearch.client.elc.ElasticsearchExceptionTranslator.translateExceptionIfPossible(ElasticsearchExceptionTranslator.java:110) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  19. at org.springframework.data.elasticsearch.client.elc.ElasticsearchExceptionTranslator.translateException(ElasticsearchExceptionTranslator.java:64) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  20. at org.springframework.data.elasticsearch.client.elc.ChildTemplate.execute(ChildTemplate.java:73) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  21. at org.springframework.data.elasticsearch.client.elc.IndicesTemplate.doExists(IndicesTemplate.java:177) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  22. at org.springframework.data.elasticsearch.client.elc.IndicesTemplate.exists(IndicesTemplate.java:169) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  23. at org.springframework.data.elasticsearch.repository.support.SimpleElasticsearchRepository.<init>(SimpleElasticsearchRepository.java:85) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  24. at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62) ~[na:na]
  25. at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:502) ~[na:na]
  26. at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:486) ~[na:na]
  27. at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:210) ~[spring-beans-6.1.1.jar:6.1.1]
  28. ... 57 common frames omitted
  29. Caused by: java.lang.RuntimeException: Connection is closed
  30. at org.springframework.data.elasticsearch.client.elc.ElasticsearchExceptionTranslator.translateException(ElasticsearchExceptionTranslator.java:63) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  31. ... 65 common frames omitted
  32. Caused by: org.apache.http.ConnectionClosedException: Connection is closed
  33. at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:920) ~[elasticsearch-rest-client-8.10.4.jar:8.10.4]
  34. at org.elasticsearch.client.RestClient.performRequest(RestClient.java:300) ~[elasticsearch-rest-client-8.10.4.jar:8.10.4]
  35. at org.elasticsearch.client.RestClient.performRequest(RestClient.java:288) ~[elasticsearch-rest-client-8.10.4.jar:8.10.4]
  36. at co.elastic.clients.transport.rest_client.RestClientHttpClient.performRequest(RestClientHttpClient.java:91) ~[elasticsearch-java-8.10.4.jar:na]
  37. at co.elastic.clients.transport.ElasticsearchTransportBase.performRequest(ElasticsearchTransportBase.java:137) ~[elasticsearch-java-8.10.4.jar:na]
  38. at co.elastic.clients.elasticsearch.indices.ElasticsearchIndicesClient.exists(ElasticsearchIndicesClient.java:655) ~[elasticsearch-java-8.10.4.jar:na]
  39. at org.springframework.data.elasticsearch.client.elc.IndicesTemplate.lambda$doExists$2(IndicesTemplate.java:177) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  40. at org.springframework.data.elasticsearch.client.elc.ChildTemplate.execute(ChildTemplate.java:71) ~[spring-data-elasticsearch-5.2.0.jar:5.2.0]
  41. ... 64 common frames omitted
  42. Caused by: org.apache.http.ConnectionClosedException: Connection is closed
  43. at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.endOfInput(HttpAsyncRequestExecutor.java:356) ~[httpcore-nio-4.4.16.jar:4.4.16]
  44. at org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:261) ~[httpcore-nio-4.4.16.jar:4.4.16]
  45. at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:87) ~[httpasyncclient-4.1.5.jar:4.1.5]
  46. at org.apache.http.impl.nio.client.InternalIODispatch.onInputReady(InternalIODispatch.java:40) ~[httpasyncclient-4.1.5.jar:4.1.5]
  47. at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:114) ~[httpcore-nio-4.4.16.jar:4.4.16]
  48. at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162) ~[httpcore-nio-4.4.16.jar:4.4.16]
  49. at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337) ~[httpcore-nio-4.4.16.jar:4.4.16]
  50. at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315) ~[httpcore-nio-4.4.16.jar:4.4.16]
  51. at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276) ~[httpcore-nio-4.4.16.jar:4.4.16]
  52. at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) ~[httpcore-nio-4.4.16.jar:4.4.16]
  53. at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591) ~[httpcore-nio-4.4.16.jar:4.4.16]
  54. at java.base/java.lang.Thread.run(Thread.java:1583) ~[na:na]

1zmg4dgp

1zmg4dgp1#

配置需要有ElasticSearch用户名和密码,以及CA SHA-256指纹
这解决了问题,现在它工作正常

  1. @Configuration
  2. public class ElasticSearchConfig extends ElasticsearchConfiguration {
  3. @Override
  4. public ClientConfiguration clientConfiguration() {
  5. return ClientConfiguration.builder()
  6. .connectedTo("localhost:9200")
  7. .usingSsl("e0650a952ba6h5jb7d1ea9b3b8a59032j2005f675ec642jkg871038f27b2840d") //add the generated sha-256 fingerprint
  8. .withBasicAuth("elastic", "FnK9l206ZbUaI3kxzJKo") //add your username and password
  9. .build();
  10. }
  11. }

字符串
这些数据可以在启动elasticsearch时找到,它会输出如下内容

  1. öüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöüΓöü
  2. ✅ Elasticsearch security features have been automatically configured!
  3. ✅ Authentication is enabled and cluster connections are encrypted.
  4. ℹ️ Password for the elastic user (reset with `bin/elasticsearch-reset-password -u elastic`):
  5. FnK9l206ZbUaI3kxzJKo
  6. ℹ️ HTTP CA certificate SHA-256 fingerprint:
  7. e0650a952ba6h5jb7d1ea9b3b8a59032j2005f675ec642jkg871038f27b2840d


更多配置选项可在文档中找到

展开查看全部

相关问题