2016-01-11 4 views
0

Если у меня есть ES-кластер и данные индексации приложений в ES.Elasticsearch: Каков эффект отключения репликации и балансировки

EDIT: Приложение создает индексы динамическим способом, основанным на некоторых бизнес-правилах.

Например, если приложение прослушивает твиты из API Twitter, основанные на некоторых хэштегах, он создает индекс в ES для каждого хэштега. Таким образом, каждый раз, когда появляется новый хэштег, в ES создается новый индекс.

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

Из API ES-кластера мы можем отключить перераспределение и балансировку осколков.

Какими будут последствия (положительные и отрицательные) для отключения перераспределения и балансировки?

ответ

0

Это звучит как совершенно неортодоксальный способ организации документов в Elasticsearch, было бы проще иметь поле not_analyzed, которое было бы массивом hashtabs (поскольку один твит может иметь ноль, два или более хэштега).

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

В любом случае, если вы отключите балансировку осколков, тогда на некоторых машинах будет много диспропорционального количества документов на некоторых машинах и слишком мало на других, это может помешать индексированию и поиску производительности.

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

+0

thnx для ответа, я отредактировал вопрос, поскольку часть hashtags была всего лишь примером. Независимо от примера, если приложение получает около 3 миллионов твитов в день, и мы хотим хранить данные за последние три месяца (что означает 3 миллиона doc * 30 * 3), мы можем поместить весь этот объем данных в один индекс и сделать запросы с фильтром на хэштеге или создать отдельный индекс на хэштег. Мы выбрали второй подход. Что Вы думаете об этом? – Fanooos

+0

Если вы хотите сохранить «x количество дней данных» в ES, это обычный шаблон, который должен иметь, например, 1 индекс/день с достаточным количеством осколков для ожидаемого общего количества документов, тогда его можно будет легко настроить в будущем. Также удаление старых данных просто, поскольку вы можете удалить целые индексы. Кроме того, вы можете использовать псевдонимы, чтобы делать запросы на «все данные», «последние 7 дней» и т. Д. Тривиально. Для общих хэштегов вы можете создавать фильтрованные псевдонимы. Я не уверен, что было бы полезно иметь отдельный индекс за хэштег. – NikoNyrh

Смежные вопросы