【发布时间】:2020-03-13 14:04:53
【问题描述】:
在查询弹性搜索聚合查询时,我收到“尝试创建太多存储桶。必须 b 小于或等于 10000 但找到 10001。”
我们如何处理这个异常?
【问题讨论】:
标签: elasticsearch elasticsearch-aggregation
在查询弹性搜索聚合查询时,我收到“尝试创建太多存储桶。必须 b 小于或等于 10000 但找到 10001。”
我们如何处理这个异常?
【问题讨论】:
标签: elasticsearch elasticsearch-aggregation
如this 链接中所述,search.max_buckets 的默认限制为10000。
这样的限制的全部目的是为了防止一些新手用户意外运行长时间和资源消耗的聚合查询,这可能导致性能问题,或者在更糟糕的情况下导致 ES 节点崩溃。
但是,如果您想更改该设置,有两种方法可以解决。
您需要转到集群中所有节点的elasticsearch.yml 并在其中添加以下值,
search.max_buckets = 10500
保存文件并重启节点。
或者,我相信您可以使用cluster API并将设置添加到persistent cluster settings,如下所示:
PUT /_cluster/settings
{
"persistent": {
"search.max_buckets": 12000
}
}
由于该设置似乎是集群范围的,因此我建议使用 Solution 2。
提供的内容,请分享您希望存储桶返回超过 10k 个存储桶的原因。如果您更改设置以便您不会开始在实时环境中看到性能问题,也请进行彻底测试,如果您这样做,这是您要记住的第一件事。
如果这有助于您解决问题,请告诉我。
【讨论】: