Задать вопрос
@xgyrfalconx

Как правильно удалять старые данные из индексов elasticsearch?

Добрый день, я новичок в ES, поизучал всевозможные способы удаления данных из индексов ES: с помощью переиндексации, delete by query, переход на партиции индексов с общим алиасом. Вопрос в том, какой из способов предпочтительней, к примеру я имею индекс в 22млн документов и хочу удалить часть данных, для освобождения места, но как итог, после такого удаления приходится дополнительно делать _forcemerge?only_expunge_deletes=true для физического удаления документов, оптимальный ли это способ и какие последствия таких удалений? Или возможно стоит поделить этот индекс на множество мелких по датам и удалять старые индексы целиком, но переиндексация тоже требует много ресурсов?
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Средний 5 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Аналитик SOC
    4 месяца
    Далее
  • Merion Academy
    Базы данных с нуля
    2 месяца
    Далее
  • Университет «Синергия»
    Профессия Java-разработчик
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
У нас куча индексов, по индексу на день, примерно по 2.5М документов за сутки и размером от 800Мб до 1.8Гб каждый. Данные держим за 6 месяцев - около 200 индексов всего.
Старые индексы удаляем, используем алиасы и темплейты индексов.
Система работает на эластике 5.5 - геморно, иногда подтормаживает и жрет кучу ресурсов.

Так вот, вот прямо в этот момент тестирую замену эластику - https://docs.victoriametrics.com/victorialogs/
Нет, это не полная замена эластику, но для наших задач подходит идеально. Да, другой язык запросов, нужно переделывать.

Документы - логи работы плееров примерно такого формата (это как раз достал из victorialogs)
{"_time":"2026-01-08T15:00:04.891Z","_stream_id":"0000000000000000e934a84adb05276890d7f7bfcadabe92","_stream":"{}","_msg":"@{START} 04-9452_XXXXX_short_75.mp3","category":"@{WERBUNG}","component":"@{AUDIOPLAYER} @{CAHNNEL} 1","deviceid":"XXX00000090","event.TRACKID":"73267","event.TYPE":"WERBUNG","event.WERBUNGMODE":"PLAYLIST","unixtime":"1767884404891"}

Основные преимущества - нагрузка раз в 5 меньше, размер данных меньше раз в 10. Прогрузив те же самые логи за 2 недели - данные заняли 708Мб вместо 30Гб! Есть фасеты, автоматическое удаление старых данных, очень шустро работает. Умеет принимать документы по эластик-булк-api!
Для запуска практически ничего не нужно - вот строчка, чтобы прогрузить архивные данные за 3 месяца и уничтожать документы после 6 месяцев
/opt/victoria/victoria-logs-prod -storageDataPath=data -maxBackfillAge=3M -retentionPeriod=6M


В общем - настоятельно рекомендую присмотреться.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы