elasticsearch,spring-boot,jhipster,Java,elasticsearch,Spring Boot,Jhipster" /> elasticsearch,spring-boot,jhipster,Java,elasticsearch,Spring Boot,Jhipster" />

Java 使用prod yml在JHipster项目中配置elasticsearch

Java 使用prod yml在JHipster项目中配置elasticsearch,java,elasticsearch,spring-boot,jhipster,Java,elasticsearch,Spring Boot,Jhipster,我有一个使用Jhipper生成器构建的应用程序,它基于Spring Boot。Jhipster的最新版本允许您将Elasticsearch作为一个选项,因此我有一个应用程序,它在开发模式下运行Elasticsearch的嵌入式实例,并在生产模式下连接到服务器实例 当应用程序在开发模式下运行时,它可以很好地连接到嵌入式实例,但如果我尝试连接到外部实例,控制台上会出现以下错误: 错误7804---[restartedMain].d.e.r.s.AbstractElasticsearchReposit

我有一个使用Jhipper生成器构建的应用程序,它基于Spring Boot。Jhipster的最新版本允许您将Elasticsearch作为一个选项,因此我有一个应用程序,它在开发模式下运行Elasticsearch的嵌入式实例,并在生产模式下连接到服务器实例

当应用程序在开发模式下运行时,它可以很好地连接到嵌入式实例,但如果我尝试连接到外部实例,控制台上会出现以下错误:

错误7804---[restartedMain].d.e.r.s.AbstractElasticsearchRepository:未能加载elasticsearch节点:org.elasticsearch.client.transport.NoNodeAvailableException:配置的节点均不可用:[{{transport}-1}{127.0.0.1}{127.0.0.1:9300}]

我的应用程序使用的是Spring boot 1.4.0版。发布版,根据elasticsearch.yml,该应用程序具有elasticsearch 2.3.5

My application-prod.yml设置:

spring:
    data:
        elasticsearch:
            cluster-name: 
            cluster-nodes: localhost:9300
默认ElasticSearch配置为:

@Configuration
public class ElasticSearchConfiguration {

    @Bean
    public ElasticsearchTemplate elasticsearchTemplate(Client client, Jackson2ObjectMapperBuilder jackson2ObjectMapperBuilder) {
        return new ElasticsearchTemplate(client, new CustomEntityMapper(jackson2ObjectMapperBuilder.createXmlMapper(false).build()));
    }            
}
我用以下命令覆盖:

@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);
        }
    }
但我仍然无法使用prod yml连接elasticsearch

调试时,我在创建ElasticsearchTemplate bean时遇到以下错误:

方法引发了“java.lang.StackOverflower”异常。无法计算org.elasticsearch.common.inject.InjectorImpl.toString()


如何解决此问题?

我有一个使用Elasticsearch的Jhipster项目。如果弹性实例在默认端口上本地运行,则可以将这些属性保留为空。无需更改类
ElasticSearchConfiguration

用于生产

在生产中,JHipster需要一个外部Elasticsearch实例。通过 默认情况下,应用程序查找正在运行的Elasticsearch实例 在本地主机上。这可以通过使用标准的Spring Boot进行配置 属性,在application-prod.yml文件中


有什么解决办法吗?我正在尝试连接到遥控器。请用答案更新您是否在remote上运行了弹性搜索?使用远程elasticsearch时,您可以继续使用默认的elasticsearch配置。只需在远程上运行elasticsearch。我正在aws实例中运行我的elasticsearch,并相应地打开了端口。无法从运行我的应用程序的其他aws实例连接。这是我的问题。需要帮助。我今天遇到了这个问题,当我将ES从2.4降级到1.7.3时,连接建立我很困惑,您的生产集群的主节点是否在本地主机上运行?“无可用节点”消息正在尝试本地连接。请详细说明?