После массового удаления документов из эластичного поиска размер удаляемых документов сразу не публикуется? - PullRequest
0 голосов
/ 17 апреля 2019

Вот стартовая статистика из AWS ElasticSearch

Count: 98365255
Size in Bytes: 62.24 GB

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

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

Count: 68782759
Size in Bytes: 57.82 GB

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

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

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

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

Но размер_ин_байта равен

62078477520. 

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

62.24 GB.

Проще говоря,

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

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

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

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

Спасибо!

1 Ответ

1 голос
/ 17 апреля 2019

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

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

ответ Бернта_Ростада,

"Дисковое пространство не освобождается автоматически при удалении документов из индекса. Причина этого заключается в том, что сегменты индекса, строительные блоки сегментов, являются неизменяемыми индексами 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...