Elasticsearch问题:not part of the cluster,节点不属于集群问题

学而时习之
对于刚刚接触Elasticsearch的同学来说,可能会遇到不少问题,当然我也是了,我的这个问题是,Springboot 项目启动后,无法正常连接到Elasticsearch,但是在浏览器输入 http://10.57.133.253::9200 的时候是可以正常访问的,Idea Console的错误提示信息如下:
在这里插入图片描述
首先我说下我的环境吧,这个是很重要的一个部分,网上很多教程根本不说环境版本,导致很多教程不能解决读者的问题,因为版本差异大,问题的处理方式也不一样。

我的环境:

  • 宿主机windows10, 且防火墙关闭
  • 虚拟机Centos7,防火墙未关闭,且端口9200,9300未开放
  • Springboot 版本:2.1.7.RELEASE(当时最新稳定版)
  • Elasticsearch版本:6.2.4容器单节点版(容器pull地址:docker.elastic.co/elasticsearch/elasticsearch:6.2.4)

再说说我选择Springboot版本和Elasticsearch版本的原因吧,先确定Springboot版本,选择时下最新的2.1.7.RELEASE,是没什么毛病的,这个确定后,就要选择好Elasticsearch的版本了,因为依赖了spring-boot-starter-data-elasticsearch:

		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-data-elasticsearchartifactId>
        dependency>

点进这个依赖内部会发现它选择的是Elasticsearch6.2.2的版本,所以我就选择了最接近的6.2.4容器版本,而没有选择最新的7.3.0(7.3.0的我也验证过,相同的配置会出其他错误),版本的选择先说到这里,网上也有很多Springboot和Elasticsearch版本选择的教程,感兴趣的可以了解一下。

顺便贴一下我运行单节点容器的命令:

docker run -d \
-p 9200:9200 \
-p 9300:9300 \
-e "discovery.type=single-node" \
--name es \
docker.elastic.co/elasticsearch/elasticsearch:6.2.4

Springboot项目的配置文件:

##端口号
server.port=8888
##es地址
spring.data.elasticsearch.cluster-nodes=10.57.133.253:9300

分析问题的时候还是要冷静对待,搞技术的切不可有浮躁的心。既然在浏览器中能正常访问单节点集群,那么暂且认为问题不在Elasticsearch,再来分析一下文章首图那个日志,会发现问题不简单…(一开始忽略了这种WARN日志),日志的意思就是说:这个10.57.133.253:9300节点不在集群elasticsearch里面。
我没有配置集群,那这个elasticsearch集群肯定是Springboot的默认配置了,验证如下:
在这里插入图片描述
所以补全了集群名的配置,完整的配置如下:

##端口号
server.port=8888
##es地址
spring.data.elasticsearch.cluster-nodes=10.57.133.253:9300
##es集群
spring.data.elasticsearch.cluster-name=docker-cluster

我们在启动容器的时候也没有配置集群名,那么怎么获取集群呢,可以配置一下,也可以通过浏览器访问你的9200端口获取:
Elasticsearch问题:not part of the cluster,节点不属于集群问题_第1张图片
写在最后:工欲善其事必先利其器。在学习新的知识的时候,一套完整的环境是我们开始的第一步,很多人也许在第一步就走不下去了,搞技术就要细心加耐心吧。而且我的这篇文章虽然不一定能够解决你的问题,但希望在某方面给你一点提示。至于端口的问题,在上面你也看到了,我的虚拟机是没有开放端口的,但是不影响我的调用,至于其中的缘由,暂时无法说明,如果有大佬知道,望不吝赐教。

你可能感兴趣的:(Docker,Elasticsearch,Springboot,Elasticsearch,docker,springboot)