[英]How can I specify an external configuration file for a java application that is not spring boot
[英]How can I specify elasticsearch spring boot configuration for Azure managed Service (without port)
我為 ElasticSearch 創建了一個 Azure 托管服務。 現在我想用我的 Spring Boot Elastic Application 訪問它。
注意:我用占位符 MyCustomAzureURLwithoutPort.com 隱藏了真正的 URL。 實際上,它類似於https://myclustername.es.REGION.azure.elastic-cloud.com
我的彈性配置是:
@Configuration
@EnableElasticsearchRepositories(basePackages = "org.elastic.repositories")
@ComponentScan(basePackages = { "org.elastic" })
public class ElasticsearchClientConfig extends AbstractElasticsearchConfiguration {
@Override
@Bean
public RestHighLevelClient elasticsearchClient() {
final ClientConfiguration clientConfiguration =
ClientConfiguration
.builder()
.connectedTo("https://MyCustomAzureURLwithoutPort.com")
.withBasicAuth(user, pw)
.build();
return RestClients
.create(clientConfiguration)
.rest();
}
但我不斷收到這樣的錯誤:
11:41:59.972 [] [] [main]
ERROR o.s.boot.SpringApplication - Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'productsearchappApplication': Invocation of init method failed; nested exception is org.springframework.dao.DataAccessResourceFailureException: https:MyCustomAzureURLwithoutPort.com; nested exception is java.lang.RuntimeException: https:MyCustomAzureURLwithoutPort.com
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:415)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1786)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:897)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:879)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:551)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:143)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:758)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:750)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:405)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1237)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at io.pratik.elasticsearch.productsearchapp.ProductsearchappApplication.main(ProductsearchappApplication.java:38)
Caused by: org.springframework.dao.DataAccessResourceFailureException: https:MyCustomAzureURLwithoutPort.com; nested exception is java.lang.RuntimeException: https:MyCustomAzureURLwithoutPort.com
at org.springframework.data.elasticsearch.core.ElasticsearchExceptionTranslator.translateExceptionIfPossible(ElasticsearchExceptionTranslator.java:76)
at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.translateException(ElasticsearchRestTemplate.java:378)
at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.execute(ElasticsearchRestTemplate.java:361)
at org.springframework.data.elasticsearch.core.DefaultIndexOperations.doRefresh(DefaultIndexOperations.java:175)
at org.springframework.data.elasticsearch.core.AbstractDefaultIndexOperations.refresh(AbstractDefaultIndexOperations.java:159)
at io.pratik.elasticsearch.productsearchapp.ProductsearchappApplication.buildIndex(ProductsearchappApplication.java:50)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:577)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157)
... 19 common frames omitted
Caused by: java.lang.RuntimeException: https:MyCustomAzureURLwithoutPort.com
at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.translateException(ElasticsearchRestTemplate.java:376)
... 28 common frames omitted
Caused by: java.io.IOException: https:MyCustomAzureURLwithoutPort.com
at org.elasticsearch.client.RestClient.extractAndWrapCause(RestClient.java:828)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:248)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:235)
at org.elasticsearch.client.RestHighLevelClient.internalPerformRequest(RestHighLevelClient.java:1514)
at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:1484)
at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:1454)
at org.elasticsearch.client.IndicesClient.refresh(IndicesClient.java:553)
at org.springframework.data.elasticsearch.core.DefaultIndexOperations.lambda$doRefresh$9(DefaultIndexOperations.java:175)
at org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate.execute(ElasticsearchRestTemplate.java:359)
... 27 common frames omitted
Caused by: java.net.UnknownHostException: https:MyCustomAzureURLwithoutPort.com
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:948)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1638)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1504)
at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve(SystemDefaultDnsResolver.java:45)
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:664)
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$InternalAddressResolver.resolveRemoteAddress(PoolingNHttpClientConnectionManager.java:635)
at org.apache.http.nio.pool.AbstractNIOConnPool.processPendingRequest(AbstractNIOConnPool.java:474)
at org.apache.http.nio.pool.AbstractNIOConnPool.lease(AbstractNIOConnPool.java:280)
at org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager.requestConnection(PoolingNHttpClientConnectionManager.java:295)
at org.apache.http.impl.nio.client.AbstractClientExchangeHandler.requestConnection(AbstractClientExchangeHandler.java:377)
at org.apache.http.impl.nio.client.DefaultClientExchangeHandlerImpl.start(DefaultClientExchangeHandlerImpl.java:129)
at org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:141)
at org.elasticsearch.client.RestClient.performRequest(RestClient.java:244)
... 34 common frames omitted
Disconnected from the target VM, address: '127.0.0.1:52567', transport: 'socket'
I also tried the URL with Port 443 ( https://myclustername.es.REGION.azure.elastic-cloud.com:443 ), that's what the Stacktrace is copied from, but this didn't worked either.
有人有想法嗎? 需要 BasicAuth 並在沒有端口的情況下連接到此 URL。
謝謝!
彈性雲使用9243
和443
。 因此,請嘗試使用9243
。
您可以在這里找到原因: 為什么 Elastic Cloud 提供專用端口(9243)而不是僅使用默認端口(443)?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.