2014-01-09 1 views
3

Недавно у меня был SNAFU, поэтому у моего кластера закончилось расщепление мозга (несмотря на наличие большого количества элементов управления на месте), что привело к обрыву, который в основном был разрушен. Я вернул все узлы в игре правильно, узнав о правильном хозяине и т. Д., Но кластер остается красным и справедливо; есть несколько осколков, у которых нет дома.Как удалить конкретный осколок индекса ElasticSearch

После использования моего RubberBand script, я был в состоянии исследовать с помощью VisualJSON найти черепки, как следующие один, что не имеет никакого узла:

{ 
    "index": "logstash-2013.12.27", 
    "node": null, 
    "primary": false, 
    "relocating_node": null, 
    "shard": 4, 
    "state": "UNASSIGNED" 
}, 

Я хотел бы, чтобы удалить их, но я не могу найти вызов API для удаления осколка, только удаление целых индексов или использование запросов. Заранее спасибо!

+0

AFAIK, не существует такой вещи. Попробуйте перезапустить узел и посмотреть, будет ли он перераспределен или нет. Если повреждение постоянно, полагаю, вам нужно удалить этот индекс. – shyos

+1

Вы как бы правы: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/cluster-reroute.html Используя эту команду и давая ей осколок, вы сможете «распределить» осколок который не назначен или не имеет узла. Вы не можете удалить. – Spanky

+0

Прохладный, не знал этого. – shyos

ответ

7
curl -XPOST 'localhost:9200/_cluster/reroute' -d '{ 
    "commands": [ 
    { 
     "allocate": { 
     "index": "tweedle-2013.12.21", 
     "shard": 3, 
     "node": "efsKb4DzQ2iaIfKfu36vsA", 
     "allow_primary": true 
     } 
    } 
    ] 
}' 

Эта команда возьмет сироту осколок и назначить его на узел efsKb4DzQ2iaIfKfu36vsA

на одной линии:

curl -XPOST 'localhost:9200/_cluster/reroute' -d '{ 
    "commands": [ 
    { 
     "allocate": { 
     "index": "tweedle-2013.12.21", 
     "shard": 3, 
     "node": "efsKb4DzQ2iaIfKfu36vsA", 
     "allow_primary": true 
     } 
    } 
    ] 
}'