aja*_*ain 12 java elasticsearch spring-boot jhipster
我有一个使用Jhipter生成器构建的应用程序,它基于Spring Boot.最新版本的Jhipster允许您将Elasticsearch作为选项包含在内,因此我有一个应用程序在开发模式下运行Elasticsearch的嵌入式实例,并以生产模式连接到服务器实例.
当应用程序在开发模式下运行时,它可以很好地连接到嵌入式实例,但如果我尝试连接到外部实例,我在控制台上会收到以下错误:
ERROR 7804 --- [restartedMain] .dersAbstractElasticsearchRepository:无法加载elasticsearch节点:org.elasticsearch.client.transport.NoNodeAvailableException:所有已配置的节点均不可用:[{#transport#-1} {127.0.0.1} {127.0 .0.1:9300}]
我的应用程序使用的是Spring启动版本1.4.0.RELEASE,根据elasticsearch.yml,该应用程序有弹性搜索2.3.5
我的application-prod.yml设置:
spring:
data:
elasticsearch:
cluster-name:
cluster-nodes: localhost:9300
Run Code Online (Sandbox Code Playgroud)
默认的ElasticSearchConfiguration是:
@Configuration
public class ElasticSearchConfiguration {
@Bean
public ElasticsearchTemplate elasticsearchTemplate(Client client, Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder) {
return new ElasticsearchTemplate(client, new CustomEntityMapper(jackson2ObjectMapperBuilder.createXmlMapper(false).build()));
}
}
Run Code Online (Sandbox Code Playgroud)
我覆盖了:
@Configuration
public class ElasticSearchConfiguration {
@Value("${spring.data.elasticsearch.cluster-name}")
private String clusterName;
@Value("${spring.data.elasticsearch.cluster-nodes}")
private String clusterNodes;
@Bean
public ElasticsearchTemplate elasticsearchTemplate() throws UnknownHostException {
String server = clusterNodes.split(":")[0];
Integer port = Integer.parseInt(clusterNodes.split(":")[1]);
Settings settings = Settings.settingsBuilder()
.put("cluster.name", clusterName).build();
client = TransportClient.builder().settings(settings).build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(server), port));
return new ElasticsearchTemplate(client);
}
}
Run Code Online (Sandbox Code Playgroud)
但我仍然无法使用prod yml连接elasticsearch.
在调试时,我在创建ElasticsearchTemplate bean时遇到以下错误:
方法抛出'java.lang.StackOverflowError'异常.无法评估org.elasticsearch.common.inject.InjectorImpl.toString()
我该如何解决这个问题?
我有一个使用 Elasticsearch 的 Jhipster 项目。如果您的弹性实例在默认端口上本地运行,您可以将这些属性留空。不需要改变类ElasticSearchConfiguration
在生产中使用
在生产中,JHipster 需要一个外部 Elasticsearch 实例。默认情况下,应用程序会查找在本地主机上运行的 Elasticsearch 实例。这可以通过使用 application-prod.yml 文件中的标准 Spring Boot 属性进行配置。
归档时间: |
|
查看次数: |
1860 次 |
最近记录: |