Elasticsearch: выберите стратегию индексирования для частного поиска на пользователя - PullRequest
1 голос
/ 02 марта 2020

Например, у меня 1000 пользователей. Данные каждого пользователя не велики, максимум 1 ГБ. Итак, у меня есть две стратегии индексации.

  • Большая индексация: у меня будет один индекс. Затем каждый раз, когда пользователь ищет какие-либо данные, я добавляю user_id в запрос.
  • Небольшая индексация: у каждого пользователя есть индекс Elasticsearch. Поскольку данные не велики, нам нужно всего 1-2 осколка.

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

Однако, есть некоторые ref1 ref2 что они рекомендуют, чтобы общее количество осколков было относительно небольшим.

Какое решение для моей ситуации является практическим?

1 Ответ

2 голосов
/ 02 марта 2020

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

Гораздо эффективнее иметь один индекс и добавить в него всех своих пользователей с полем user_id, чтобы различать данные каждого пользователя.

...