弹性搜索聚合查询抛出异常

时间:2020-03-13 14:04:53

标签: elasticsearch elasticsearch-aggregation

在查询弹性搜索聚合查询时,我收到“试图创建太多存储桶。必须b小于或等于10000但找到10001。”

我们如何处理此异常?

1 个答案:

答案 0 :(得分:1)

this链接中所述,search.max_buckets的默认限制为10000

具有这样的限制的全部目的是为了防止某些新手用户意外地运行长时间且消耗资源的聚合查询,这可能导致性能问题,或者在更糟的情况下,导致ES节点崩溃。

但是,如果要更改该设置,可以通过两种方法进行。

解决方案1:更改elasticsearch.yml(需要重新启动节点)

您需要转到群集中所有节点的elasticsearch.yml,并在其中添加以下值,

search.max_buckets = 10500

保存文件并重新启动节点。

解决方案1:群集API(无需重新启动)

或者,我相信您可以使用cluster API并将设置添加到persistent cluster settings,如下所示:

PUT /_cluster/settings
{
  "persistent": {
    "search.max_buckets": 12000
  }
}

由于该设置似乎是群集范围的,因此我建议使用Solution 2

所提供的信息,请与您分享为什么您希望这些存储桶返回超过1万个存储桶的原因。如果只是更改设置,以免在实际环境中看不到性能问题,也请进行彻底的测试。如果这样做,这是您要记住的第一件事。

让我知道这是否可以帮助您解决问题。