如何在ES中分配未分配的碎片



我在elasticsearch

中具有以下设置
[root elasticsearch]$ curl localhost:9200/_cluster/health?pretty
{
"cluster_name" : "iresbi",
"status" : "red",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 0,
"active_shards" : 0,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 10,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 0.0
}

我有3个节点,它们既充当数据节点又是主节点,目前群集中的搜索失败了,以下异常

[2017-04-24T01:36:44,134][DEBUG][o.e.a.s.TransportSearchAction] [node-1] All shards failed for phase: [query]
org.elasticsearch.action.NoShardAvailableActionException: null
Caused by: org.elasticsearch.action.NoShardAvailableActionException

当我在碎片上做猫时,我会得到以下输出

[root elasticsearch]$ curl localhost:9200/_cat/shards?pretty
customer 4 p UNASSIGNED    
customer 4 r UNASSIGNED    
customer 2 p UNASSIGNED    
customer 2 r UNASSIGNED    
customer 3 p UNASSIGNED    
customer 3 r UNASSIGNED    
customer 1 p UNASSIGNED    
customer 1 r UNASSIGNED    
customer 0 p UNASSIGNED    
customer 0 r UNASSIGNED

遵循磁盘空间使用:

[root elasticsearch]$ df
Filesystem                        1K-blocks    Used Available Use%     Mounted on
/dev/mapper/vg_root-root            8125880 1587988   6102080  21% /
devtmpfs                            3994324       0   3994324   0%   /dev
tmpfs                               4005212       4   4005208   1%     /dev/shm
tmpfs                               4005212    8624   3996588   1% /run
tmpfs                               4005212       0   4005212   0%   /sys/fs/cgroup
/dev/vda3                            999320    1320    945572   1%   /crashdump
/dev/vda1                            245679  100027    132545  44% /boot
/dev/mapper/vg_root-var             6061632 5727072      3604 100%   /var
/dev/mapper/vg_root-tmp             1998672    6356   1871076   1%  /tmp
/dev/mapper/vg_root-var_log         1998672   55800   1821632   3%  /var/log
/dev/mapper/vg_root-apps           25671908  292068  24052736   2%  /apps
/dev/mapper/vg_root-home            1998672  169996   1707436  10% /home
/dev/mapper/vg_root-var_log_audit   1998672    8168   1869264   1% /var/log/audit
/dev/vdb                          257898948   61464 244713900   1% /data
tmpfs                                801044       0    801044   0%      /run/user/1000

需要将这些碎片分配回去,我可以在集群中再添加一个节点,这可以解决问题吗?如何解决这个问题?

基于其他人收集的一些信息,如果您还没有适应/etc/elasticsearch.yml,

Elasticsearch的数据将存储在/var/lib/elasticsearch/

因此,您的/var为100%可能是您问题的原因。

适当的分辨率将取决于碎片中的数据量,是否存在副本,以及/数据安装点是否是您用于Elasticsearch的邮件。

在所有情况下,通过将索引数据迁移到具有足够空间的文件系统

来正确完成分辨率

另一个人已经问过并在此处收到有关迁移方法的答复

最新更新