当前位置: 首页 > 面试题库 >

处理org.elasticsearch.client.transport.NoNodeAvailableException

时恩
2023-03-14
问题内容

嗨,在我的SpringBoot项目中,我已经使用JPA配置了elasticsearch。我正在使用ElasticsearchRepository。现在对于配置,当我使用本地主机时,一切正常,但是当我放置IP地址时,我面临异常-

org.elasticsearch.client.transport.NoNodeAvailableException:没有配置的节点可用:[{#transport#-1}
{lDnuVli1Rriy-9j1pdozZA} {27.101.12.99}
{27.101.12.99:9300}]在org.elasticsearch.client上.transport.TransportClientNodesService.ensureNodesAreAvailable(TransportClientNodesService.java:347)〜[elasticsearch-5.6.11.jar:5.6.11]
at
org.elasticsearch.client.transport.TransportClientNodesService.execute(TransportClientNodesService.java:245)〜[elasticsearch-
5.6.11.jar:5.6.11],位于org.elasticsearch.client.transport.TransportProxyClient.execute(TransportProxyClient.java:59)〜[elasticsearch-5.6.11.jar:5.6.11],位于org.elasticsearch.client。
transport.TransportClient.doExecute(TransportClient.java:366)〜[elasticsearch-5.6.11.jar:5.6.11]
at
org.elasticsearch.client.support.AbstractClient.execute(AbstractClient。java:408)〜[elasticsearch-5.6.11.jar:5.6.11]
at
org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:80)〜[elasticsearch-5.6.11.jar:5.6.11]
at
org.springframework.data.elasticsearch.core.ElasticsearchTemplate.index(ElasticsearchTemplate.java:571)上的org.elasticsearch.action.ActionRequestBuilder.execute(ActionRequestBuilder.java:54)〜[elasticsearch-5.6.11.jar:5.6.11]
)〜[spring-data-
elasticsearch-3.0.10.RELEASE.jar:3.0.10.RELEASE]在org.springframework.data.elasticsearch.repository.support.AbstractElasticsearchRepository.save(AbstractElasticsearchRepository.java:156)〜[spring-
data-elasticsearch-3.0.10.RELEASE.jar:3.0.10.RELEASE]
data.elasticsearch-3.0.10.RELEASE.jar:3.0.10.RELEASE]在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)〜[na:1.8.0_151]在sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
〜[na:1.8。[0_151]在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)〜[na:1.8.0_151]在java.lang.reflect.Method.invoke(未知来源)〜[na:1.8.0_151]

初始化Elastic Search的代码-

@Bean
    public Client client() throws Exception {

        Settings  settings = Settings.builder()
                            .put("cluster.name",getElasticCluster())
                            .build();

        return new PreBuiltTransportClient(Settings.EMPTY)
                .addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(getElasticHost()),getElasticPort()));
    }

    @Bean
    public ElasticsearchOperations elasticsearchTemplate() throws Exception {
        return new ElasticsearchTemplate(client());
    }

elasticsearch:开玩笑:代理:主机:27.101.12.99端口:9300

我进行了很多搜索,但对我而言没有任何帮助。因此,请检查并提供帮助。


问题答案:

您的应用程序中的elasticsearch客户端正在使用传输协议来加入集群。在最近的发行版中不赞成使用这种方法,并且已经将其删除。这表示传输协议不是HTTP,并且您的笑话代理可能无法分析/模拟发送的数据。这就是localhost可以运行但jest代理失败的原因。

为了使您的应用程序与Elasticsearch的未来版本兼容,您应该考虑使用高级REST客户端,而不会丢失spring应用程序的任何功能。很快,您将能够再次使用jest,因为REST客户端正在使用HTTP与elasticsearch进行通信。

请查看此内容以获取有关客户端迁移的详细信息(我假设基于stacktrace的elasticsearch版本,请加倍确认)https://www.elastic.co/guide/zh/elasticsearch/client/java-
rest/ 5.6 / java-rest-high-level-
migration.html



 类似资料:
  • 嗨,在我的SpringBoot项目中,我使用JPA配置了弹性搜索。我正在使用ElasticsearchRepository。现在,对于使用localhost时的配置,一切正常,但当我输入IP地址时,我面临一个异常- org . elastic search . client . transport . nonodeavailableexception:配置的节点都不可用:[{ # transpor

  • 我在表中总共有8条记录,其中6条在spring批处理调用read时可以使用jpareader。现在我将页面大小和块大小设置为1以进行测试。期望作业运行时,它应该进行6次读取调用,然后它应该逐个处理,逐个写入。但实际上发生的是,它只是调用read 4次(从日志中我可以看到这样读取页面0...1)并处理4个,其中一个由于不匹配写入标准而被过滤掉,然后它只是更新了3个记录,作业标记为成功完成。

  • 当我使用Spring批处理管理运行长时间运行的批处理作业的多个实例时,它会在达到jobLauncher线程池任务执行程序池大小后阻止其他作业运行。但是从cron中提取多个工作似乎效果不错。下面是作业启动器配置。 Spring批处理管理员Restful API是否使用不同于xml配置中指定的作业启动器?

  • 我对Spring批处理跳过逻辑有一些问题。我已经配置了一个作业的步骤来跳过两个异常(SQLIntegrityConstraintViolation异常和乐观锁定失败异常): 但当作业运行时,由于我将其配置为跳过的异常,作业以未知状态完成: 我做错什么了吗?我希望这一步跳过负责抛出其中一个异常的项,并继续处理,以便以完成状态结束。

  • 我想用3个步骤建立一个批次。我想配置这个步骤,就像如果有100条记录,当step1读取、处理和写入一个10块时,step02,然后step03开始和结束,然后再次返回step1,读取下一个块。这在Spring批量可能吗?

  • 问题 你有一个包含相对URLs路径的HTML文档,需要将这些相对路径转换成绝对路径的URLs。 方法 在你解析文档时确保有指定base URI,然后 使用abs: 属性前缀来取得包含base URI的绝对路径。代码如下:  Document doc = Jsoup.connect("https://www.wenjiangs.com").get(); Element link = doc.sel

  • WebGL着色器语言和C语言一样提供了一些用于预处理的命令#define、#include、#if等以#号开头的命令。 宏定义#define 注意宏定义和着色器声明的变量不同,着色器程序执行前需要进行编译处理,着色器程序编译处理之后程序才会在GPU上执行,宏定义主要是在编译处理阶段起作用。比如宏定义#define PI 3.14,PI符号表示圆周率3.14,如果在代码return float f

  • JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON与XML最大的不同在于XML是一个完整的标记语言,而JSON不是。JSON由于比XML更小、更快,更易解析,以及浏览器的内建快速解析支持,