错误 429 [类型=reduce_search_phase_exception]

Error 429 [type=reduce_search_phase_exception]

我的文档有多种语言,并且遵循以下模式:One index per language。因为他们建议使用

搜索所有索引
/blogs-*/post/_count

模式。对于我的情况,我正在计算我拥有多少文档的索引。我 运行 我的代码并发,所以同时发出许多请求。如果我搜索

/blogs-en/post/_count

或任何其他语言都可以。但是,如果我搜索

/blogs-*/post/_count 

我很快遇到:

"Error 429 (Too Many Requests): [reduce]  [type=reduce_search_phase_exception]
"

有解决办法吗?无论我是否使用

,都会发出相同数量的请求
/blogs-en/post/_count or /blogs-*/post/_count. 

我一直在我的代码中使用相同数量的工人,但重新安排索引以使每种语言有一个索引突然破坏了我的代码。

编辑:这是一个全新的索引,当我启动程序时没有任何文档,当我收到错误时我有大约 5,000 个文档,所以没有承受任何重负载。

编辑:我在本地机器上使用上面引用的 link 和 运行 中的映射,所有默认值都是 ES...在我的例子中是 shards=5 和 replicas =1。我真的只是按照 link.

中的示例

编辑:只要发出 13-20 个请求就会出现错误,我知道 ES 可以处理更多。搜索 /blogs-en/post/_count 而不是 /blogs-*/post/_count 等。可以轻松处理数千个问题。

另一个编辑:我已经删除了所有并发,但在我收到错误之前仍然只能访问 40-50 个请求。

我没有收到该请求的错误,它 returns 总文档。
您的集群是否负载过重?
无论如何,使用简单的聚合,您可以获得 总文档数 hits.total 每个索引文档数 count_per_index 部分结果:

GET /blogs-*/post/_search
{
    "size": 0, 
   "query": {
      "match_all": {}
   },
   "aggs": {
      "count_per_index": {
         "terms": {
            "field": "_index"
         }
      }
   }
}