Elasticsearch - последствия разделения документов на отдельные индексы
Допустим, у меня есть 100000 документов из разных групп клиентов, которые одинаково отформатированы с одинаковым типом информации.
Документы из отдельных групп клиентов обновляются в разное время дня. Мне было рекомендовано предоставить каждой группе клиентов свой собственный индекс, чтобы при локальном обновлении моего индивидуального индекса клиента я мог создать новый индекс для этого клиента и удалить старый индекс для этого клиента.
Каковы последствия для разделения данных на несколько индексов и запроса с использованием псевдонима? В частности:
- Это увеличит требования к жестким дискам моего сервера?
- Это увеличит требования к оперативной памяти моего сервера?
- Не будет ли поиск в Flexiblesearch медленнее выполнять путем запроса псевдонима для запроса всех индексов?
Спасибо за любую помощь или совет.
1 ответ
Каждый индекс имеет некоторые издержки на всех уровнях, но обычно он небольшой. Для 100000 документов я бы поставил под сомнение необходимость разделения, если эти документы не очень большие. В целом каждый добавленный индекс будет:
Требовать некоторый объем оперативной памяти для буферов вставки и других задач, связанных с индексом
Иметь собственные издержки слияния на диске относительно большего отдельного индекса
Обеспечить некоторое увеличение задержки во время запроса из-за объединения результатов, если запрос охватывает несколько индексов
Есть много факторов, которые влияют на определение того, являются ли какие-либо из них значительными. Если у вас много оперативной памяти и несколько процессоров и твердотельных накопителей, то все может быть в порядке.
Я бы посоветовал вам создать решение, которое использует минимально возможное количество шардов. Это, вероятно, означает один (или, по крайней мере, только несколько) индексов.