贴一下错误信息:
一、设置副分片
1.查询索引设置:发现副本数为2,直接设置为0
product/_settings
2.设置副本数为0
PUT参数:
{"number_of_replicas":0}
3.此时在看集群节点状态
此时他会自动分配到其他节点,如果一直没有分配到其他节点,那就是其他节点有错误信息,没同步成功,我这里就一直没成功,发现是应为ik分词器报错,所以在子节点安装了ik分词器以后重启节点即可。
成功的截图(我后来又将副分片设置成一就好了,设置成2仍然会出现3个未分配分片,应该和节点数量有关。可以尝试加节点或者减少副分片):
二、命令行强制分配分片
1.查看集群健康状态:
curl -XGET http://localhost:9200/_cluster/health?pretty
图中显示有6个分片未分配节点
2.查看未分配分片状态
curl -s "http://localhost:9200/_cat/shards" | grep UNASSIGNED
3.查看节点为master的节点唯一标识
curl 'localhost:9200/_nodes/process?pretty'
4.执行reroute
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/_cluster/reroute' -d '{
"commands" : [
{
"allocate_replica" : {
"index" : "product",
"shard" : 0,
"node" : "master"
}
}
]
}'
index:需要修复的索引的名字product
shard:shard的编号,图中可以看出0,1,2
node:master节点名字
备注:我在执行该命令的时候报错:
看到上面有说ik分词器,才想起来master上面的product使用了ik分词器,从节点没有安装,所以无法成功强制分片。此时需要将从节点也安装ik分词器。 一定要重启!!!!!!
检验ik分词器是否安装:
post执行: _analyze
参数:{"text":"中华人民共和国人民大会堂","analyzer":"ik_max_word"}
正确结果返回如图:
参考:https://blog.csdn.net/wer724853863/article/details/78533105