首页 > 解决方案 > Elasticsearch 7.10.2 不会在 Mac M1 上绑定 application.properties 变量

问题描述

我面临一个奇怪的问题。我有两台笔记本电脑,一台在 Windows 下运行,一切正常,另一台是 Mac Mini M1。

假设,我正在开发一个使用 Elasticsearch 作为存储库的基本 Spring Boot 应用程序。在中application.yml,像往常一样,我有以下属性:

spring:
  elasticsearch:
    rest:
      uris: https://dummy-cloud-provider.cloud.com:12833
      username: myusername
      password: mypassword

但每次我想在我的 Mac 上启动应用程序时,都会出现以下错误:

2021-06-23 15:55:51.972 ERROR [reactor-http-nio-3] r.c.p.Operators - Operator called default onErrorDropped
reactor.core.Exceptions$ErrorCallbackNotImplemented: org.springframework.data.elasticsearch.client.NoReachableHostException: Host 'localhost:9200' not reachable. Cluster state is offline.
Caused by: org.springframework.data.elasticsearch.client.NoReachableHostException: Host 'localhost:9200' not reachable. Cluster state is offline.
    at org.springframework.data.elasticsearch.client.reactive.SingleNodeHostProvider.lambda$lookupActiveHost$3(SingleNodeHostProvider.java:101)
    at reactor.core.publisher.FluxHandle$HandleSubscriber.onNext(FluxHandle.java:102)
    at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:220)
    at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:79)
    at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2397)
    ...

我不明白为什么它总是跳过我的application.yml变量并尝试达到localhost:9200.

我希望有一个人可以帮助我 :)

此致

标签: spring-bootelasticsearchspring-data-elasticsearchapple-m1

解决方案


这不是 Spring Data Elasticsearch 问题,而是 Spring Boot 问题。Spring Data Elasticsearch 不使用应用程序属性来设置任何内容。

查看配置,您似乎想设置到 Elasticsearch 的命令式(非反应式)客户端连接?

堆栈跟踪显示失败的调用是由响应式客户端完成的。

我怀疑您在类路径和 Spring 启动执行器中有反应式 Spring 库 (webflux)。然后 Spring Boot 使用默认值localhost:9200为执行器配置响应式客户端。

如果没有看到您的 maven/gradle 设置,我无法确定,但这对我来说是这个错误的最可能的解释。


推荐阅读