Я скопировал 20 индекс из экземпляра elasticsearch в новый экземпляр. После этого, когда я начал запускать поисковые запросы в новом экземпляре из моего кода, после 20-30 звонков я получаю ошибку:
{[aRGdCWK2QsyfvgGJLt6xrA][quanteye_ing][1]: EsRejectedExecutionException[rejected execution (queue capacity 1000)
on org.elasticsearch.search.action.SearchServiceTransportAction$23@29fdcd0e]}
Как решить проблему?
Эта ошибка обычно возникает, когда кластер elasticsearch не может идти в ногу с поисковым трафиком. Это в основном механизм внутренней защиты, который экономит elasticsearch от перегрузки. Когда эта ошибка возвращается, приложение, работающее с надлежащим поведением, должно временно прекратить выполнение поисков и дождаться восстановления экземпляра elasticsearch. Если эта ситуация возникает слишком часто, может потребоваться увеличение емкости кластера путем добавления большего количества узлов.
Если проблема вызвана короткими шипами в клиентском трафике, вы также можете устранить проблему, увеличив размер очереди пула потоков:
threadpool.search.queue_size: 2000
Это можно сделать в файле elasticsearch.yml
или динамически. Однако это решение не будет работать с устойчивым интенсивным трафиком, превышающим емкость кластера.