查询elasticsearch聚合查询时,我得到“尝试创建太多存储桶。必须b小于或等于10000但找到10001。”
我们如何处理该异常?
最佳答案
如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万个存储桶的原因。如果只是更改设置,也要进行彻底的测试,以免在实际环境中看不到性能问题;如果这样做,这是您要牢记的第一件事。
让我知道这是否有助于您解决问题。
关于elasticsearch - Elasticsearch 聚合查询抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60671904/