Elasticsearch - последствия разделения документов на отдельные индексы

Допустим, у меня есть 100000 документов из разных групп клиентов, которые одинаково отформатированы с одинаковым типом информации.

Документы из отдельных групп клиентов обновляются в разное время дня. Мне было рекомендовано предоставить каждой группе клиентов свой собственный индекс, чтобы при локальном обновлении моего индивидуального индекса клиента я мог создать новый индекс для этого клиента и удалить старый индекс для этого клиента.

Каковы последствия для разделения данных на несколько индексов и запроса с использованием псевдонима? В частности:

  • Это увеличит требования к жестким дискам моего сервера?
  • Это увеличит требования к оперативной памяти моего сервера?
  • Не будет ли поиск в Flexiblesearch медленнее выполнять путем запроса псевдонима для запроса всех индексов?

Спасибо за любую помощь или совет.

1 ответ

Решение

Каждый индекс имеет некоторые издержки на всех уровнях, но обычно он небольшой. Для 100000 документов я бы поставил под сомнение необходимость разделения, если эти документы не очень большие. В целом каждый добавленный индекс будет:

  1. Требовать некоторый объем оперативной памяти для буферов вставки и других задач, связанных с индексом

  2. Иметь собственные издержки слияния на диске относительно большего отдельного индекса

  3. Обеспечить некоторое увеличение задержки во время запроса из-за объединения результатов, если запрос охватывает несколько индексов

Есть много факторов, которые влияют на определение того, являются ли какие-либо из них значительными. Если у вас много оперативной памяти и несколько процессоров и твердотельных накопителей, то все может быть в порядке.

Я бы посоветовал вам создать решение, которое использует минимально возможное количество шардов. Это, вероятно, означает один (или, по крайней мере, только несколько) индексов.

Другие вопросы по тегам