Я нахожусь в середине попытки заменить настройку Solr на Elasticsearch. Это новая установка, которая еще не видела производства, поэтому у меня есть много возможностей для того, чтобы возиться с вещами и заставить их работать хорошо.
У меня очень, очень большой объем данных. Я индексирую некоторые данные в реальном времени и удерживаю их на 7 дней (используя поле _ttl). Я не храню данные в индексе (и отключил поле _source). Я ожидаю, что мой индекс стабилизируется вокруг строк 20 миллиардов. Я буду помещать эти данные в 2-3 названных индекса. Производительность поиска до нескольких миллиардов строк вполне приемлема, но производительность индексирования является проблемой.
Я немного смущен тем, что ES использует осколки внутри. Я создал два ES-узла, каждый из которых имеет отдельный каталог данных, каждый из которых содержит 8 индексов и 1 реплику. Когда я смотрю на состояние кластера, я вижу только один осколок и одну реплику для каждого node. Не поддерживает ли каждый node несколько индексов внутри? (Проверка местоположения на диске показывает, что определенно присутствует только один индекс Lucene). - Решено, так как моя настройка индекса не была правильно выбрана из конфигурации. Создание индекса с использованием API и определение количества осколков и реплик теперь произвело именно то, что я ожидал увидеть.
Кроме того, я попытался запустить несколько копий одного и того же ES node (из той же конфигурации), и он распознает, что уже выполняется копирование и создается его собственная рабочая область. У этих новых экземпляров узлов также есть только один индекс на диске. - Теперь, когда каждый node использует несколько индексов, один node со многими индексами более чем достаточен для дросселирования всей системы, поэтому это не проблема.
Когда вы запускаете дополнительные узлы Elasticsearch для максимальной производительности индексации? Должен ли я иметь много узлов, каждый из которых работает с 1 индексом 1 реплики, или меньше узлов с тоннами индексов? Есть ли что-то, что мне не хватает в моей конфигурации, чтобы отдельные узлы делали больше работы?
Также: есть ли какой-либо показатель для того, чтобы знать, когда перегружен только HTTP-сервер node? Прямо сейчас у меня есть один node, посвященный только HTTP, но, помимо использования ЦП, я не могу сказать, работает ли он ОК или нет. Когда пришло время запускать дополнительные узлы HTTP и разделить программное обеспечение индексирования на различные узлы?