本文介绍使用Elasticsearch Serverless服务时,可能遇到的高频问题。
报错问题一
-
报错内容:
"app storage exceed limit, app current size: xx GB app limit size: yy GB refer to: MAX_STORAGE_PER_CU and maxCu" -
报错原因:当前App的存储容量已经达到上限。
-
解决方案:
-
调整CU上限(MaxCU)会自动放宽存储容量,默认单CU对应存储容量比例为1:40,例如2 CU上限存储容量默认80 GB。
-
调整MAX_STORAGE_PER_CU可调整上述单CU对应的存储容量比例。
说明调大MAX_STORAGE_PER_CU的值会导致查询和写入性能下降,请谨慎调整。
-
报错问题二
-
报错内容:
"index storage exceed limit, index current size: xx GB index limit size: yy GB refer to: index storage" -
报错原因:当前索引的存储容量已经达到上限。
-
解决方案:
-
可调整索引存储大小来放宽存储容量限制。
-
可调整MAX_STORAGE_PER_INDEX并新建索引。
说明-
对于读多写少的场景,推荐调整MAX_STORAGE_PER_INDEX并新建索引,使用别名关联旧索引,将数据写入到新索引中。
-
MAX_STORAGE_PER_INDEX仅对新建索引生效。
-
-
报错问题三
-
报错内容:查询时报错
too_many_clauses或提示maxClauseCount/max_terms_count超限。 -
报错原因:ES Serverless 不支持调大
maxClauseCount和max_terms_count参数,两者的最大限制均为 1024。当查询中 Bool Query 的 should 子句数量或 terms 查询的词项数量超过该限制时,会触发此报错。 -
解决方案:
可通过以下方式优化查询逻辑,避免超限:
-
方案一:使用 terms 查询替代 bool should 子句
将循环构建的
bool should子句替换为terms查询。terms查询在 Lucene 层面通常只算 1 个子句,默认上限为 65,536 个值,远高于maxClauseCount的 1024 限制。示例:{ "terms": { "key.keyword": ["value1", "value2", "value3"] } } -
方案二:拆分查询
将庞大的词项数组切分为多个小数组(每组不超过 1024 个词项),通过 Bool Query 的
should子句组合多个子查询的结果。 -
方案三:使用 Terms Lookup 机制
从另一个索引的文档中提取字段值作为查询条件,避免在请求中硬编码传递大数组。
若业务场景必须调大
maxClauseCount或max_terms_count的限制,建议迁移至 ES PaaS 版本,PaaS 版本支持自定义调整这些参数。 -
常见问题一
-
问题描述:如何在 ES Serverless 的 Kibana 中添加自定义用户?为什么在 Stack Management 中看不到 Security 菜单?
-
解决方案:
添加自定义用户
-
登录 Kibana,在左侧导航栏进入 Stack Management > Security > Roles。
-
单击创建角色,配置所需权限(如
manage、kibana_system等)。 -
进入 Stack Management > Security > Users 页面,单击创建用户。
-
填写用户名和密码,并绑定步骤 2 中创建的角色。
如果在 Stack Management 中看不到 Security 菜单,或菜单下的功能被禁用,说明当前登录账号的权限不足。请使用创建应用时设置的管理员账号登录 Kibana,该账号具备创建 Role 和 User 的管理权限。
-
常见问题二
-
问题描述:在 ES Serverless 中创建索引时,出现
ElasticsearchWarning: current index has max storage limit which can be confirmed in aliyun console告警,是否影响使用? -
问题原因:该告警为预期行为,不影响索引创建和使用。ES Serverless 对每个索引设置存储上限,创建索引时系统会返回此告警提示当前索引存在最大存储限制。索引仍会正常创建,可通过
_cat/indicesAPI 确认索引状态为green。 -
存储上限说明:单索引默认存储上限为 20 GB,可通过调整
MAX_STORAGE_PER_INDEX参数修改。应用级别存储上限默认 100 GB,可通过调整MAX_STORAGE_PER_CU和MaxCU修改。在阿里云控制台 ES Serverless 应用详情页可查看当前存储用量和上限配置。