Упругая сила упругости и проблема пространства c - PullRequest
0 голосов
/ 02 февраля 2020

Я новичок в Elasticsearch, поэтому не вините меня сильно. Ситуация такова, что сервер почти исчерпал пространство журнала, осталось около 400 МБ. Мне пришлось удалить старые журналы двухлетнего периода go, но, как оказалось, он просто помечает их как удаленные, но фактически удаляет их в фоновом режиме во время автоматического объединения. Индекс, который я пытался очистить, активно используется для записи в него журналов, но чтобы освободить место на диске, я решил запустить POST /logging/_forcemerge?only_expunge_deletes=true. Через GET _tasks?detailed=true&actions=*forcemerge я вижу, что задача запущена, но в течение 2 часов ничего не происходило. Место не освободилось, и есть ощущение, что не стоит делать принудительное слияние и слушать все отзывы на форумах и сайтах об этой процедуре.

Сами вопросы.

  1. Могу ли я узнать, как долго продлится принудительное слияние?
  2. Я отключил серверы, которые пишут в этот индекс, насколько я понимаю, не стоит ли писать в индекс во время принудительного слияния ?
  3. Поскольку я использовал параметр only_expunge_deletes = true для объединения только сегментов с удаленными документами, это повлияет на поиск по индексу?
  4. Каков наилучший метод, который не возникнет в таких ситуациях?

1 Ответ

2 голосов
/ 02 февраля 2020
  1. Могу ли я узнать, как долго продлится принудительное слияние?

Нет, извините, слияние не содержит никакой информации о его прогресс.

Я отключил серверы, которые пишут в этот индекс, насколько я понимаю, не стоит ли писать в индекс во время принудительного объединения?

Принудительное объединение как правило, полезно, когда вы никогда больше не будете писать в индекс . Нет причин прекращать запись в индекс только на время слияния, но, наоборот, если вы продолжите запись в индекс sh, тогда вообще не рекомендуется его принудительное слияние.

Поскольку я использовал параметр only_expunge_deletes = true для объединения только сегментов с удаленными документами, это повлияет на поиск по индексу?

Слияние часто выгодно для поиска, поэтому Elasticsearch (действительно Lucene) делает это на заднем плане. Однако принудительное слияние может нарушить обычный автоматический процесс слияния c в будущем, поэтому рекомендуется не делать этого с индексами, которые будут видеть будущие записи.

Какова лучшая практика, которая не возникает в таких ситуациях?

Я думаю, что хорошей практикой, которую вы упускаете, учитывая, что вы индексируете журналы, является использование основанные на времени индексы : время от времени (например, ежемесячно) начинайте новый индекс, имя которого содержит дату (например, месяц и год). Elasticsearch позволяет выполнять поиск по нескольким индексам одновременно (возможно, с использованием подстановочного знака или псевдоним ). Затем вы можете управлять жизненным циклом этих индексов индивидуально (даже есть функция для автоматического c управления жизненным циклом индекса ), которая включает в себя удаление старых индексов, когда они достигают подходящего возраста. Удаление подмножества документов в индексе стоит дорого и не обязательно экономит место, но удаление всего индекса обходится дешево и сразу освобождает место.

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