После массового удаления документов из elasticsearch размер удаленных документов не освобождается сразу?

#elasticsearch

#elasticsearch

Вопрос:

Вот начальная статистика из AWS ElasticSearch

 Count: 98365255
Size in Bytes: 62.24 GB
  

После того, как я удалил около 1/3 документов

Панель мониторинга AWS ElasticSearch показывает

 Count: 68782759
Size in Bytes: 57.82 GB
  

Я не видел слишком много свободного места после удаления 1/3 документов.

Итак, я напрямую вызвал _stats api, я получил другой размер в байтах.

 "docs": {
            "count": 68782759,
            "deleted": 32680935
        },
        "store": {
            "size_in_bytes": 62078477520,
            "throttle_time_in_millis": 0
        },
  

Текущее количество соответствует панели мониторинга AWS Elasticsearch:
68782759.

Но size_in_bytes

 62078477520. 
  

Он почти такой же, как и размер до того, как я выполнил массовое удаление,

 62.24 GB.
  

Простыми словами,

Я предполагал, что получу большой размер свободного места после удаления 1/3 документов.

  • Панель мониторинга AWS показывает, что я освобождаю только 1/10 места после удаления 1/3 документов
  • _stats показывает, что после удаления 1/3 документов у меня почти не освободилось места.

Должен ли я ждать, пока данные size_in_bytes будут корректными позже?

Должен ли я выполнять какие-то действия по обновлению, чтобы получить свободное место после удаления документов?

Спасибо!

Ответ №1:

Я нашел ответ здесь.

https://discuss.elastic.co/t/free-disk-space-monitoring-after-deleting-records/146651

Ответ Bernt_Rostad,

«Место на диске не освобождается автоматически при удалении документов из индекса. Причина этого в том, что сегменты индекса, строительные блоки сегментов, являются неизменяемыми индексами Lucene. Это означает, что документ, хранящийся в сегменте, никогда физически не обновляется и не стирается, а просто помечается как удаленный, если вы выполняете обновление или удаление для него в Elasticsearch.

Из-за этого Elasticsearch будет время от времени выполнять слияние сегментов в индексе, обычно когда в индексе очень много маленьких сегментов или количество документов, помеченных как удаленные, составляет большой процент от общего количества сохраненных документов («большой» может составлять 20-30%). Когда происходит слияние, Elasticsearch считывает два или более меньших сегмента и записывает их в новый больший сегмент. В процессе Elasticsearch пропустит все документы, помеченные как удаленные, так что после завершения создания нового сегмента и удаления оригиналов меньшего размера у вас будет сохранено место на диске, соответствующее размеру удаленных документов «.

Существуют подходы к освобождению пространства сейчас. Но в моем случае я просто подожду, пока слияние сегментов освободит пространство.

Примечание:

После ожидания в течение одного дня освободилось место на диске.

 "primaries": {
        "docs": {
            "count": 68784759,
            "deleted": 1885108
        },
        "store": {
            "size_in_bytes": 42676386191,
            "throttle_time_in_millis": 0
        },
  

Уменьшено с 62078477520 до 42676386191.