elasticsearch-shard
В некоторых случаях индекс Lucene или транслог копии фрагмента могут быть повреждены. Команда elasticsearch-shard позволяет удалить поврежденные части фрагмента, если хорошую копию фрагмента нельзя автоматически восстановить или восстановить из резервной копии.
Вы потеряете поврежденные данные при выполнении elasticsearch-shard. Этот инструмент следует использовать только в крайнем случае, если нет возможности восстановить данные из другой копии фрагмента или восстановить снимок.
Синтаксис
bin/elasticsearch-shard remove-corrupted-data ([--index <Index>] [--shard-id <ShardId>] | [--dir <IndexPath>]) [--truncate-clean-translog] [-E <KeyValuePair>] [-h, --help] ([-s, --silent] | [-v, --verbose])
Описание
Когда Elasticsearch обнаруживает, что данные фрагмента повреждены, он отказывает в работе этой копии фрагмента и отказывается использовать её. В нормальных условиях фрагмент автоматически восстанавливается из другой копии. Если нет хорошей копии фрагмента и вы не можете восстановить её из снимка, вы можете использовать elasticsearch-shard, чтобы удалить повреждённые данные и восстановить доступ к любым оставшимся данным в неповрежденных сегментах.
Остановите Elasticsearch перед запуском elasticsearch-shard.
Чтобы удалить поврежденные данные фрагмента, используйте подкоманду remove-corrupted-data.
Есть два способа указать путь:
- Укажите имя индекса и имя фрагмента с помощью параметров
--indexи--shard-id. - Используйте параметр
--dir, чтобы указать полный путь к поврежденным файлам индекса или транслога.
Удаление поврежденных данных
elasticsearch-shard анализирует копию фрагмента и предоставляет обзор найденных повреждений. Для продолжения необходимо подтвердить, что вы хотите удалить поврежденные данные.
Сделайте резервную копию ваших данных перед запуском elasticsearch-shard. Это деструктивная операция, удаляющая поврежденные данные из фрагмента.
$ bin/elasticsearch-shard remove-corrupted-data --index my-index-000001 --shard-id 0
WARNING: Elasticsearch MUST be stopped before running this tool.
Please make a complete backup of your index before using this tool.
Opening Lucene index at /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
>> Lucene index is corrupted at /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/
Opening translog at /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/translog/
>> Translog is clean at /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/translog/
Corrupted Lucene index segments found - 32 documents will be lost.
WARNING: YOU WILL LOSE DATA.
Continue and remove docs from the index ? Y
WARNING: 1 broken segments (containing 32 documents) detected
Took 0.056 sec total.
Writing...
OK
Wrote new segments file "segments_c"
Marking index with the new history uuid : 0pIBd9VTSOeMfzYT6p0AsA
Changing allocation id V8QXk-QXSZinZMT-NvEq4w to tjm9Ve6uTBewVFAlfUMWjA
You should run the following command to allocate this shard:
POST /_cluster/reroute
{
"commands" : [
{
"allocate_stale_primary" : {
"index" : "index42",
"shard" : 0,
"node" : "II47uXW2QvqzHBnMcl2o_Q",
"accept_data_loss" : false
}
}
]
}
You must accept the possibility of data loss by changing the `accept_data_loss` parameter to `true`.
Deleted corrupt marker corrupted_FzTSBSuxT7i3Tls_TgwEag from /var/lib/elasticsearchdata/nodes/0/indices/P45vf_YQRhqjfwLMUvSqDw/0/index/ Когда вы используете elasticsearch-shard для удаления поврежденных данных, идентификатор размещения фрагмента изменяется. После перезапуска узла вам необходимо использовать API перенаправления кластера, чтобы сообщить Elasticsearch о новом идентификаторе. Команда elasticsearch-shard отображает запрос, который необходимо отправить.
Вы также можете использовать параметр -h, чтобы получить список всех параметров, которые поддерживает инструмент elasticsearch-shard.
Наконец, вы можете использовать параметр --truncate-clean-translog для обрезки транслога фрагмента, даже если он, кажется, не поврежден.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/shard-tool.html