java - Elasticsearch 客户端默认为 localhost
问题描述
我在我的 Spring Boot (2.5.4) 应用程序中使用 spring.data.elasticsearch 和 Elasticsearch 7.14.1。
我的 application.properties 是这样的
spring.elasticsearch.rest.uris=elasticsearch:9200
spring.data.elasticsearch.cluster=elasticsearch:9200
spring.data.elasticsearch.repositories.enabled=true
只要调用来自本地主机,就可以正常工作,没有问题。但是,当我尝试启动我的 Spring Boot 容器时,我看到一个失败NoReachableHostException
reactor.core.Exceptions$ErrorCallbackNotImplemented: org.springframework.data.elasticsearch.client.NoReachableHostException: Host 'localhost:9200' not reachable. Cluster state is offline.
blah-blah-service
Caused by: org.springframework.data.elasticsearch.client.NoReachableHostException: Host **'localhost:9200'** not reachable. Cluster state is offline.
blah-blah-service
at org.springframework.data.elasticsearch.client.reactive.SingleNodeHostProvider.lambda$lookupActiveHost$3(SingleNodeHostProvider.java:101)
显然,无论出于何种原因,我建议使用“elasticsearch”主机(定义的网络,经过测试并可以从 docker 容器内部和外部访问)并没有很好地与 Spring Data 配合使用。我什至用过
@PropertySource("classpath:mysearch.properties")
在我的应用程序中尝试将这些属性引入应用程序,但看起来没有任何效果。我的 Elasticsearch 配置中是否缺少某些内容或其他内容?
PS:我curl http://elasticsearch:9200
在容器内锻炼过,没有发现任何问题
解决方案
这些配置是 Spring Boot 特定的,Spring Data Elasticsearch 不使用它们。但据我所见,您正在配置传输客户端(集群条目,无论如何都不应该使用)和命令式REST 客户端,但根据错误消息,您正在使用反应式REST 客户端。
根据Spring Boot 文档,您需要设置spring.data.elasticsearch.client.reactive.endpoints
推荐阅读
- r - 试图找到这个特定的字符“|” 字符串中的位置
- r - 从二阶分位数回归中获取拟合值
- c - 瑞萨电子 GCC 链接器错误与共享代码
- c++ - Eigen 中的 Lambda 函数 Elementwise
- javascript - Google 跟踪代码管理器自定义变量返回未定义
- android - 图标和背景颜色一起
- java - 使用条件进行减法时具有相同的值
- sql-server - 收到有关从 SET 中消除空值的警告,但没有空值
- r - 在 RcppArmadillo 中无赋值的逐元素矩阵向量乘法和除法
- mongodb - mongodb 3.6 arrayFilters 需要一个顶级字段名称