В своём приложении мне необходимо создать новый индекс, для этого я использую High Level REST Client и CreateIndexRequest. Вот код, который я использую
В Map<String, Object> initialSetting задаётся только количество шард = 3 и период обновления индекса = -1. И после выполнения данного метода количество java потоков увеличивается на 300+. Подскажите пожалуйста в чём может быть проблема. Версия elasticsearch клиента 7.5.2, версия кластера 7.9.1. Может ли это быть из-за разности версий?
Вот количество потоков до выполнения метода:
То есть каждый вызов этого метода создает новый набор HttpPost, RestClient и RestHighLevelClient? В createNewIndex два таких вызова и только один из них ведет к закрытию клиента?
Получается, что так. Я исправил эту ошибку, теперь клиент создаётся только 1 рази закрывается, но тенденция с увеличением количества потоков не изменилась, увеличивается примерно на столько же
Мы больше не создаём его каждый раз, это была ошибка, сейчас клиент создаётся только 1 раз и мы его используем. А потоки называются I/O dispatcher №, вот более подробно про них:
Может ли количество шрад и реплик на индекс послужить причиной тому, что получается такое количество потоков? В нашем коде мы много раз отправляем запросы на индекс, забираем данные, а потом, когда все данные собрали и обновили их в другом индексе отправляем агрегирующий запрос. Т.е. количество запросов за один проход может быть очень большим. И каждый индекс у нас состоит из 3 шардов и 2 реплик на каждую шарду. Может ли это влиять на количество потоков? Т.к. если индекс распараллелен на несколько шард, то когда мы отправляем search запрос он работает с каждой шардой этого индекса и получается, когда мы пытаемся обновить данные в индексе по какому-то критерию эластик ищет эти данные для обновления в каждой шарде и не плодит ли он всеми этими действиями большое количество потоков?
Нет. Разбиение запроса на шардовые подзапросы происходит на сервере, а не на клиенте.
Это потоки из apache httpcore, которые RestClient использует. Они держаться в пуле.
Не должно быть. Был баг, который создавал проблемы до 4.5.0, но в 4.5.2 он уже был исправлен. А как поиск выполняется? Вы там, случайно, нового клиента не создаете?
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.