CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页实践文章告别手动补索引:SLS 支持索引自动发现,让数据开箱即用、自由分析

告别手动补索引:SLS 支持索引自动发现,让数据开箱即用、自由分析

#SLS#AI运维#AIOps#日志分析

CNOps | 2026-10-11

也许你也曾经遇到过这样的场景:线上突发故障,你顺着线索一路排查,终于锁定了一个随新版本上线、包含关键信息的日志字段。但点击查询时,系统却提示:“该字段未配置索引,无法进行分析”。

在半结构化日志日益普及的今天,写入端可以灵活扩展字段,分析端却仍然依赖预先配置的索引。每次发版带来新字段,都要手动补索引,对于历史数据可能还要再等待索引重建。这使得“写入的灵活”并没有完全转化为“分析的便利”。

AI Agent 的兴起,则让这个矛盾更加突出。Agent 在执行任务时会动态生成新的日志字段,在多轮“推理—检索”中也会根据中间结果不断调整查询分析路径。这些字段和分析需求都在运行时产生,难以提前预设,也无法每次都依靠人工实时跟进索引配置。

为此,阿里云日志服务 SLS 推出自动发现字段索引功能,让索引具备自适应数据变化的能力,自动为新写入的字段创建索引并开启统计,无需手动干预。无论是开发运维人员还是 Agent,都无需逐个配置字段索引,就能使用新字段进行分析,从而实现数据的开箱即用。

01-comparison-manual-vs-auto.png

一、手动维护索引,越来越难跟上变化

字段很难在接入时一次确定

通过字段索引进行日志查询和 SQL 分析,通常需要先确定字段,再配置索引。当日志结构稳定、查询需求明确时,这套方式很容易落实。

但实际业务中的字段往往是逐步增加的。应用升级会带来新的观测信息,接入不同数据源会引入新的日志结构,还有一些字段只在特定条件下出现。接入时看到的日志样本,很难覆盖后续所有数据。

于是,维护索引也成了一项持续的工作:每次新增字段,都要考虑是否需要查询、是否用于分析,以及相应的索引是否已经配置。业务变化越快,这项工作就越难做全。

用到字段时,才发现还没有索引

字段有没有索引,往往到真正使用时才会被注意到。新的查询需要增加一个过滤条件,统计需要换一个分组维度,却发现对应字段还没有建立索引。

此时再添加索引,分析就要等待;如果还需要覆盖已经写入的历史数据,则可能需要重建索引,当历史数据量较大时,等待的时间也会被拉长。

数据已经存在,却不能马上分析。原本可以继续深入的问题,卡在了索引准备这一步。

Agent 让日志字段和查询需求更难预先确定

当日志由 Agent 生成和写入时,日志内容会随着任务、工具调用和执行结果变化。不同任务可能记录不同的字段,执行过程中也可能增加新的状态和中间结果,很难在接入之初就完整确定日志结构。

当 Agent 负责分析日志时,分析路径同样难以提前预设。分析过程中,Agent 通过多轮"推理—调用工具—观察结果"推进任务,借助字段检索缩小范围,再通过 SQL 完成聚合、排序和对比。每一轮结果又会决定下一步查询哪些字段、验证什么假设,查询需求随着推理过程动态产生。

如果分析过程中发现字段没有索引,就可能需要暂停查询,等待索引补建或重建,甚至由人工介入处理,打断原本连续推进的推理与工具调用。

二、SLS 自动发现索引:新字段自动建索引,无需逐个配置

开启自动发现索引后,SLS 会在数据写入时自动识别未配置索引的新字段,为其构建索引并更新索引配置。

02-infographic-auto-index-capabilities-v2.png

持续发现:自动创建索引并开启统计

自动发现索引会持续检查新写入的日志。遇到尚未配置字段索引的顶层字段时,SLS 自动为其创建字段索引并开启统计,使其能够参与字段查询和 SQL 分析。

这项能力会随着日志写入持续工作。应用后续增加的字段、不同数据源带来的字段,以及接入时尚未出现的字段,都可以在实际写入时被发现,无需每次新增字段后再手动补充配置。

对于应用开发者,新增日志字段时少了一项同步维护工作;对于数据使用者,分析时可以直接使用这些新字段,自由调整查询条件和统计维度。

写入即构建:无缝覆盖配置可见前的数据

开启自动发现索引后,SLS 会在日志写入时立即为新字段构建索引。索引构建与字段配置的生效是两个独立的过程——构建会随写入立即开始,配置可见需要一定的同步时间。

这意味着,在配置尚未可见的这段时间里写入的数据,索引同样会被构建。待配置生效后,这部分数据可以直接用于查询和分析,无需补建或重建索引。

统一按 text 建索引:兼容类型不确定的字段

在自动发现字段时,仅凭字段首次出现时的值,很难准确判断其真实的业务类型。例如,某新字段写入的第一条日志值是 123,看似是数值,但后续写入的完全可能是 abc(例如随机 ID)。如果贸然在首次探测时将索引类型固定为数值型,后续遇到非数字字符时就会面临类型冲突。

为此,SLS 对自动发现的字段统一采用 text 类型建立索引。这种高兼容性的设计能够包容各种格式的字段值,确保任何格式的新字段都能顺利写入并生成索引,避免因类型判断不准而导致的冲突与漏建。

SQL 类型自适应转换:免去类型声明

虽然底层统一以 text 类型存储,但这并不影响数值类计算的便利性。在进行 SQL 分析时,针对自动探测出来的字段,SLS 引擎在遇到数值类表达式时,会自动在运行时将字段值转换为数值类型。对于无法转换为数值的值,会自动跳过。相当于将 sum(x) 自动转换为 sum(try_cast(x as double))。

这样,通常情况下,无需专门将自动探测出的字段改为数字类型,就可以直接按照数字类型去写 SQL,使用起来更加方便。

三、如何开启和使用自动发现索引

在控制台开启自动发现索引

进入目标 Logstore 的索引配置页面,确认全文索引已开启,勾选“非指定字段自动发现(需开启全文索引)”并保存,即可开始持续发现新写入日志中的字段。

控制台开启入口按账号分批开放中,如果暂未被灰度到,可以提交工单联系开启白名单。

20260910-142805-SLS-自动发现索引-公众号文章-v6.png

查看自动发现的字段

开启后,继续向 Logstore 写入日志。新出现的字段会自动建立索引,随后可以在索引配置页面的“自动探测字段”区域查看。

这些字段索引的类型都是 text 类型,分词符、是否大小写敏感、包含中文这些属性,和全文索引相同,并且默认开启了统计。

20260910-142908-SLS-自动发现索引-公众号文章-v6.png

如果需要修改自动探测出的字段属性,可以点击字段上面的 + 号,提升为手动配置字段,然后再进行修改其相关属性。

20260910-164511-SLS-自动发现索引-公众号文章-v6.png

使用自动发现的字段进行查询分析

待字段配置可见后,就可以在日志查询界面使用这些自动探测字段,进行字段查询、快速分析和常规 SQL 分析,使用方式与手动创建的字段索引完全一致。

20260910-163332-SLS-自动发现索引-公众号文章-v6.png

自动探测字段默认开启统计,可以进行 SQL 分析。自动探测字段在索引层面是 text 类型,但在 SQL 中也可以直接视为数字类型去使用。

image (25).png

通过 SDK 开启和管理自动发现的字段

SDK 方式已经全地域支持,无需添加白名单即可使用。

在索引配置的 json 中,line字段的"auto_key_detect": true 表示开启自动发现索引的能力。auto_text_keys表示自动发现出来的索引字段。

{
  "line": {
    "auto_key_detect": true,
    "auto_text_keys": ["status", "code", "latency"]
  },
  "keys": {
  }
}

SDK 也提供了相关接口来操作,以 python sdk 为例(0.9.52 版本及以上)

from aliyun.log import IndexConfig, IndexLineConfig

#开启自动发现索引
client.create_index(
    project, logstore,
    IndexConfig(line_config=IndexLineConfig(
        token_list=[" ", ",", ";", "\n", "\t"],
        auto_key_detect=True,
    ))
)

#获取自动发现索引相关配置
index = client.get_index_config(project, logstore).get_index_config()
print("是否开启自动发现:", index.line_config.auto_key_detect)
print("已发现的字段:", index.line_config.auto_text_keys)

关于自动发现索引的更多配置细节、使用限制、常见问题等说明,请参考官网文档。

四、总结

随着 AI Agent 深度参与到任务规划与问题分析中,底层数据系统正迎来一次角色转变:查询需求不再能够被提前预设,而是在运行时动态产生的。

为了支撑这种高频、不确定的探索,现代数据系统不仅要利用弹性容量和高效检索,去处理大模型无法直接消化的大规模数据,更要把字段识别、索引构建等前置工作自动完成,减少分析过程中的等待与人工干预。

04-framework-adaptive-data-v3.png

自动发现索引正 SLS 沿着“数据自适应”方向迈出的一步。弹性容量应对规模变化,灵活 Schema 允许结构演进,而索引自动发现则保证了新增字段的即时可用。

当底层配置不再成为探索的限制,无论是开发者还是 AI Agent,都能更纯粹地专注于业务问题本身,真正实现数据的开箱即用与自由分析。

文章大纲

推荐文章

超过 2000+ 位开发者正在阅读

给 OpenClaw 加上企业级 Memory

给 OpenClaw 加上企业级 Memory

4646 阅读

阿里云 STAROps 全域智能运维平台发布!

阿里云 STAROps 全域智能运维平台发布!

3453 阅读

阿里云正式发布 RCA Benchmark

阿里云正式发布 RCA Benchmark

2716 阅读

推荐视频

UModel 最佳实践 Vol.1 UModel 数据建模全景解读

UModel 最佳实践 Vol.1 UModel 数据建模全景解读

3854 观看50:35
云监控2.0全景:可观测范式升级与智能运维蓝图

云监控2.0全景:可观测范式升级与智能运维蓝图

2532 观看41:06

推荐工具

精选可观测领域开发者工具

云监

云监控 2.0 沙箱体验

7483 使用

免费

免费网络拨测工具

2746 使用