错误429 [type = reduce_search_phase_exception]

时间:2017-05-15 04:11:47

标签: elasticsearch elasticsearch-5

我的文档有很多种语言,我遵循这种模式: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. 

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

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

编辑:我正在使用上面引用的链接中找到的映射,并在具有ES的所有默认值的本地计算机上运行...在我的情况下,shards = 5,replicas = 1。我真的只是关注链接中的示例。

编辑:看到的错误只有13-20个请求,我知道ES可以处理更多。搜索/ blogs -en / post / _count而不是/ blogs - * / post / _count等...可以轻松处理数千个没有错误。

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

1 个答案:

答案 0 :(得分:1)

我没有收到该请求的错误,它返回了总文件 你的集群是否处于负载状态? 无论如何,使用简单聚合,您可以在hits.total中获得总文档数,并在结果的count_per_index部分中获得每个索引文档数

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