Elasticsearch Serverless FAQ

更新时间:
复制 MD 格式

本文介绍使用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 不支持调大 maxClauseCountmax_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 机制

      从另一个索引的文档中提取字段值作为查询条件,避免在请求中硬编码传递大数组。

    若业务场景必须调大 maxClauseCountmax_terms_count 的限制,建议迁移至 ES PaaS 版本,PaaS 版本支持自定义调整这些参数。

常见问题一

  • 问题描述:如何在 ES Serverless 的 Kibana 中添加自定义用户?为什么在 Stack Management 中看不到 Security 菜单?

  • 解决方案

    添加自定义用户

    1. 登录 Kibana,在左侧导航栏进入 Stack Management > Security > Roles

    2. 单击创建角色,配置所需权限(如 managekibana_system 等)。

    3. 进入 Stack Management > Security > Users 页面,单击创建用户。

    4. 填写用户名和密码,并绑定步骤 2 中创建的角色。

    Security 菜单不可见

    如果在 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/indices API 确认索引状态为 green

  • 存储上限说明:单索引默认存储上限为 20 GB,可通过调整 MAX_STORAGE_PER_INDEX 参数修改。应用级别存储上限默认 100 GB,可通过调整 MAX_STORAGE_PER_CUMaxCU 修改。在阿里云控制台 ES Serverless 应用详情页可查看当前存储用量和上限配置。