Elasticsearch-SERVICE_UNAVAILABLE/1/state not recovered

本文介绍了解决Elasticsearch集群启动后无法通过es-head连接的问题。通常原因是集群中不存在任何索引,导致stats接口无法正常工作。文章给出了创建索引的具体步骤,并解决了此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当你安装部署好es集群时,发现启动无报错,但是用es-head连接的时候,发现连接不上,出现error,提示服务不可用:

[2022-01-19T10:11:33,271][WARN ][r.suppressed             ] path: /_stats, params: {}
org.elasticsearch.cluster.block.ClusterBlockException: blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];
	at org.elasticsearch.cluster.block.ClusterBlocks.globalBlockedException(ClusterBlocks.java:161) ~[main/:?]
	at org.elasticsearch.action.admin.indices.stats.TransportIndicesStatsAction.checkGlobalBlock(TransportIndicesStatsAction.java:70) ~[main/:?]
	at org.elasticsearch.action.admin.indices.stats.TransportIndicesStatsAction.checkGlobalBlock(TransportIndicesStatsAction.java:47) ~[main/:?]
	at org.elasticsearch.action.support.broadcast.node.TransportBroadcastByNodeAction$AsyncAction.<init>(TransportBroadcastByNodeAction.java:256) ~[main/:?]
	at org.elasticsearch.action.support.broadcast.node.TransportBroadcastByNodeAction.doExecute(TransportBroadcastByNodeAction.java:234) ~[main/:?]
	at org.elasticsearch.action.support.broadcast.node.TransportBroadcastByNodeAction.doExecute(TransportBroadcastByNodeAction.java:79) ~[main/:?]
	at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:173) ~[main/:?]
	at org.elasticsearch.action.ingest.IngestActionFilter.apply(IngestActionFilter.java:82) ~[main/:?]
	at org.elasticsearch.action.support.TransportAction$RequestFilterChain.proceed(TransportAction.java:171) ~[main/:?]
	at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:145) ~[main/:?]
	at org.elasticsearch.action.support.TransportAction.execute(TransportAction.java:87) ~[main/:?]
	at org.elasticsearch.client.node.NodeClient.executeLocally(NodeClient.java:75) ~[main/:?]
	at org.elasticsearch.client.node.NodeClient.doExecute(NodeClient.java:64) ~[main/:?]
	at org.elasticsearch.client.support.AbstractClient.execute(AbstractClient.java:403) ~[main/:?]
	at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.execute(AbstractClient.java:1226) ~[main/:?]
	at org.elasticsearch.client.support.AbstractClient$IndicesAdmin.stats(AbstractClient.java:1547) ~[main/:?]
	at org.elasticsearch.rest.action.admin.indices.RestIndicesStatsAction.lambda$prepareRequest$17(RestIndicesStatsAction.java:148) ~[main/:?]
	at org.elasticsearch.rest.BaseRestHandler.handleRequest(BaseRestHandler.java:82) [main/:?]
	at org.elasticsearch.rest.RestController.executeHandler(RestController.java:243) [main/:?]
	at org.elasticsearch.rest.RestController.dispatchRequest(RestController.java:200) [main/:?]
	at org.elasticsearch.http.HttpServer.dispatchRequest(HttpServer.java:113) [main/:?]

这个问题导致的原因有很多,有些网友说是由于elasticsearch.yml的node.name没有指定,还有些说的将旧索引的/data/nodes目录删除,但这些都尝试过了,没啥用。对于一个新的es集群来说,需要创建一个索引,不然空集群状态下,es-head无法通过调用elasticsearch的stats接口检测,因为没有索引供你检测。我的就是这个问题。创建一个新索引之后,问题解决:

http://localhost:9200/blog
{
	"mappings":{
		"article":{
			"properties":{
				"id":{
					"type":"long",
					"index":true
				
					
				},
				"title":{
					"type":"text",
					"index":true,
					"analyzer":"standard"
				},
				"content":{
					"type":"text",
					"index":true,
					"analyzer":"standard",
					"store":true
				}
			}
		}
	}
}

在这里插入图片描述

上面出现unassigned 未分配分片,需要你创建索引时自定义指定副本数,主备分片一般不会在同一索引数据节点上。当然如果你机器上有多个数据节点,可能会将主备都分配到这台机器上的不同数据节点上,这样可能会提高丢数据风险(万一磁盘损坏,你主备数据都丢了就尴尬了)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值