Были некоторые проблемы с диском на сервере Graylog2, который я использую для журналов отладки. Теперь есть неназначенные осколки:
curl -XGET http://host:9200/_cat/shards
graylog_292 1 p STARTED 751733 648.4mb 127.0.1.1 Doctor Leery
graylog_292 1 r UNASSIGNED
graylog_292 2 p STARTED 756663 653.2mb 127.0.1.1 Doctor Leery
graylog_292 2 r UNASSIGNED
graylog_290 0 p STARTED 299059 257.2mb 127.0.1.1 Doctor Leery
graylog_290 0 r UNASSIGNED
graylog_290 3 p STARTED 298759 257.1mb 127.0.1.1 Doctor Leery
graylog_290 3 r UNASSIGNED
graylog_290 1 p STARTED 298314 257.3mb 127.0.1.1 Doctor Leery
graylog_290 1 r UNASSIGNED
graylog_290 2 p STARTED 297722 257.1mb 127.0.1.1 Doctor Leery
graylog_290 2 r UNASSIGNED
....
Это более 400 осколков. Я могу удалить их без потери данных, потому что это настройка одного узла. Для этого мне нужно пройтись по индексу (graylog_xxx) и осколку (1,2,...).
Как мне перебрать это (2 переменные) с помощью Bash? Есть 2 переменные для вызова API удаления, которые мне нужно заменить (афаик):
curl -XPOST 'host:9200/_cluster/reroute' -d '{
"commands" : [ {
"allocate" : {
"index" : "$index",
"shard" : $shard,
"node" : "Doctor Leery",
"allow_primary" : true
}
}
]
}'
Что меня также беспокоит, так это то, что неназначенные осколки не имеют узла. Но в вызове API мне нужно указать один.