我有一个包含4个节点的ES集群:
number_of_replicas: 1
search01 - master: false, data: false
search02 - master: true, data: true
search03 - master: false, data: true
search04 - master: false, data: true
Run Code Online (Sandbox Code Playgroud)
我不得不重新启动search03,当它返回时,它重新加入群集没有问题,但留下了7个未分配的分片.
{
"cluster_name" : "tweedle",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 4,
"number_of_data_nodes" : 3,
"active_primary_shards" : 15,
"active_shards" : 23,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 7
}
Run Code Online (Sandbox Code Playgroud)
现在我的群集处于黄色状态.解决此问题的最佳方法是什么?
有趣的是,当添加一个新索引时,该节点开始处理它并与群集的其余部分一起玩得很好,它只是留下未分配的分片.
关注问题:我是否做错了导致这种情况发生在一开始?对重新启动节点时以这种方式运行的集群,我没有多少信心.
注意:如果由于某种原因运行单个节点群集,则可能只需执行以下操作:
curl -XPUT 'localhost:9200/_settings' -d '
{
"index" : {
"number_of_replicas" …Run Code Online (Sandbox Code Playgroud) 我的低源硬件配置机器上有 1 个节点、1 个分片、1 个副本架构。我必须将 Elasticsearch 堆大小保持在总内存的 20%,并且我将1k~1m文档索引到 Elasticsearch,以了解硬件配置。我有不同类型的机器,从2GB 到 16GB,但由于它们是32 位架构,我只能使用300m到1.5GB 的最大内存作为堆大小。
由于某些原因,我不知道为什么,Elasticsearch 使用未分配的分片创建了一些索引,并使集群健康状况变为红色。我尝试在不创建新节点的情况下恢复和分配分片并将数据传输到其中,因为我不应该这样做。我还尝试使用此配置使用此命令重新路由索引:
curl -XPUT 'localhost:9200/_settings' -d '{
"index.routing.allocation.disable_allocation": false
}'
Run Code Online (Sandbox Code Playgroud)
这是我的节点信息:
{
name: mynode
transport_address: inet[/192.168.1.4:9300]
host: myhost
ip: 127.0.0.1
version: 1.0.0
build: a46900e
http_address: inet[/192.168.1.4:9200]
thrift_address: /192.168.1.4:9500
attributes: {
master: true
}
settings: {
threadpool: {
search: {
type: fixed
size: 600
queue_size: 10000
}
bulk: {
type: fixed
queue_size: 10000
size: 600
}
index: { …Run Code Online (Sandbox Code Playgroud)