Я понимаю, что есть два доминирующих шаблона для хранения скользящего окна данных внутри elasticsearch:

  1. создание ежедневных индексов, как предлагает logstash, и удаление старых индексов и, следовательно, всех записей, которые они содержат, когда они выпадают из окна
  2. с использованием функции TTL elasticsearch и единого индекса, когда elasticsearch автоматически удаляет старые записи по отдельности, когда они выпадают из окна

Инстинктивно я выбираю 2, так как:

  • Мне не нужно писать cron-задание
  • один большой индекс легче передать моим коллегам и запросить (я думаю?)
  • любая кошмарная динамика потока, которая вызывает появление старых событий журнала, не приводит к созданию новых индексов, а старые события сохраняются только в течение 60-х годов, которые elasticsearch использует для очистки ttl.

Но моя интуиция подсказывает мне, что удаление индекса за один раз, вероятно, требует гораздо меньше вычислительных ресурсов, хотя я понятия не имею, насколько менее интенсивен и насколько дорогостоящий ttl.

Для контекста, мои входящие потоки редко превышают пиковые значения 4К сообщений в секунду (mps) и, скорее всего, будут зависать на уровне 1-2K mps.

Есть ли у кого-нибудь опыт сравнения этих двух подходов? Как вы, наверное, догадались, я новичок в этом мире! Был бы признателен за любую помощь, в том числе даже за помощь в том, какой правильный подход к размышлениям о подобных вещах.

Ура!

3
Mike Dewar 11 Мар 2015 в 13:55

1 ответ

Лучший ответ

Я бы выбрал вариант 1 - то есть ежедневное падение индексов.

Ежедневные индексы падения

Плюсы :

  • Это наиболее эффективный способ удаления данных
  • Если вам нужно реструктурировать индекс (например, применить новое сопоставление, увеличить количество сегментов), любые изменения легко применить к новому индексу.
  • Подробная информация о текущем индексе (т.е. имя) скрыта от клиентов с помощью псевдонимы
  • Поиск по времени может быть направлен на поиск только по определенному небольшому индексу.
  • Шаблоны индекса упрощают процесс создания ежедневных индекс.

Эти преимущества также подробно описаны в Руководстве по временным данным < / a>, см. также Удаление данных

Минусы:

  • Требуется дополнительная работа для настройки (например, настройка заданий cron), но есть плагин (curator), которые могут в этом помочь.
  • Если вы выполняете обновления данных, тогда все версии данных документа должны будут находиться в одном индексе, то есть несколько индексов не будут работать для вас.

Использование TTL или запросов для удаления данных

Плюсы :

  • Просто понять и легко реализовать

Минусы:

  • Когда вы удаляете документ, он только помечается как удаленный. Он не будет физически удален, пока содержащий его сегмент не будет слились прочь. Это очень неэффективно, поскольку удаленные данные будут занимать дисковое пространство, ЦП и память.
2
Olly Cruickshank 11 Мар 2015 в 11:47