На моем сервере elasticsearch: Всего документов: 3 миллиона, общий размер: 3,6G Затем я удаляю около 2,8 миллиона документов: общие документы: около 0,13 миллиона, общий размер: 3,6G
Я удалил документы, как мне освободить размер документов?
На моем сервере elasticsearch: Всего документов: 3 миллиона, общий размер: 3,6G Затем я удаляю около 2,8 миллиона документов: общие документы: около 0,13 миллиона, общий размер: 3,6G
Я удалил документы, как мне освободить размер документов?
При удалении документов они помечаются только как удаленные, поэтому их не нужно искать. Чтобы освободить место на диске, вы должны оптимизировать индекс:
curl -XPOST 'http://localhost:9200/_optimize?only_expunge_deletes=true'
документация: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-optimize.html
Документация перемещена по адресу: https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-forcemerge.html.
Начиная с Elasticsearch 2.1.x, optimize
устарела в пользу forcemerge
. API такой же, только конечная точка изменилась.
curl -XPOST 'http://localhost:9200/_forcemerge?only_expunge_deletes=true'
В текущей версии эластичного поиска (5.4)
Для оптимизации всех показателей:
POST/_all/_forcemerge?only_expunge_deletes=true
Оптимизировать единый индекс
POST/twitter/_forcemerge?only_expunge_deletes=true
, где twitter является индексом
Кнутуолкер ответ правильный. Однако если вы используете AWS ElasticSearch и хотите освободить место для хранения, это не будет работать.
На AWS индекс для подделки должен быть указан в URL. Он может включать в себя подстановочные знаки, как это обычно происходит с ротацией индексов.
curl -XPOST 'https://something.es.amazonaws.com/index-*/_forcemerge?only_expunge_deletes=true'
AWS публикует список отличий API ElasticSearch.
Замените индексное имя своим. Это сразу освободит место
curl -XPOST 'http://localhost:9200/indexname/_forcemerge' -d
'{"only_expunge_deletes": false, "max_num_segments": 1 }'