引自免费微信小程序:皆我百晓生
看起来你在尝试在 Linux 环境中使用 Docker 容器运行 Elasticsearch,并且与 Spring Boot 应用程序集成。从你提供的信息来看,错误似乎发生在 Spring Boot 应用试图连接到 Elasticsearch 时。
首先,检查一下你的 Docker 容器是否正常运行并且可以访问。可以通过运行 docker ps
命令查看正在运行的容器。根据你的描述,Elasticsearch 容器应该类似于这个:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
elasticsearch elasticsearch:6.5.3 "/usr/local/bin/dock..." 7 days ago Up 23 hours 0.0.0.0:4200->9200/tcp,:::4200->9200/tcp,... elasticsearch
接下来,确认你的 Spring Boot 应用配置文件(可能是 application.properties
或者 application.yml
)中的 Elasticsearch 连接设置。你需要确保它指向正确的主机名和端口。参考下面的例子:
对于 application.properties
文件:
spring.data.elasticsearch.cluster-name=selector-sit
spring.data.elasticsearch.cluster-nodes=localhost:4200
对于 application.yml
文件:
spring:
data:
elasticsearch:
cluster-name: selector-sit
cluster-nodes: localhost:4200
由于你的 Docker 映射将 9200 和 9300 端口映射到了宿主机的 4200 和 4300 上,你应该使用 localhost:4200
而不是 X.Y.Z.A:4300
来连接到 Elasticsearch。
如果你是在开发环境中运行,那么 localhost
是合适的。但在生产环境或其他分布式部署情况下,你需要使用正确运行 Elasticsearch 的机器的 IP 地址或域名。
此外,确保你的 Spring Boot 应用配置文件(application.yml
)中的 Elasticsearch 配置部分与你在 Docker 容器内的 Elasticsearch 配置(elasticsearch.yml
)匹配。特别是关于网络设置的部分,例如 network.host
和 discovery.type
。
如果仍然遇到问题,请检查 Spring Boot 日志以获取更详细的错误信息,这可能会提供额外的线索。如果你需要进一步的帮助,可以提供更多日志信息或者详细描述错误消息。