我有一个整个应用程序的传输客户端实例。我可以处理8个并行搜索到elasticsearch。
但是当我尝试执行10个或更多并行搜索请求时,我收到了esRejected执行异常。
我是否必须增加搜索线程池的队列大小。我可以从elasticsearch.yml
中的客户端或服务器设置执行此操作感谢。
答案 0 :(得分:0)
我希望您所说的错误如下:
org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor
几天前我遇到了完全相同的问题。我的用例是对弹性搜索的16个并发请求,其中每个请求都是批量插入。在我开始之前,我想解释导致此错误的原因。当您向elasticsearch服务器发送批量请求时,它们是通过线程池处理(默认值= 8)。如果没有理想的线程,则剩余的消息将附加到队列中。如果向elasticsearch发出的请求太多,则会填充此队列。 以下是我尝试的不同解决方案:
上述操作可以通过调用es api:
来执行 helpers.bulk(es_client, query, request_timeout=200, chunk_size=self.chunk_size)
request_timeout&等参数chunk_size传递给helpers.bulk的kwargs,后者又调用streaming_bulk。
请参阅线程池配置here
帮助方法here
的详细说明