如何在Adaptive Cards中显示Elastic告警含特殊字符的属性文本?
解决Adaptive Card访问Elastic带特殊符号字段的问题
核心方案:用方括号语法访问特殊属性名
Adaptive Card的数据绑定支持通过[]包裹属性名的方式,直接读取包含点号、@等特殊字符的字段,无需修改Elastic生成的原始数据结构。
适配你的数据的完整示例
以下是针对你提供的Elastic告警数据编写的Adaptive Card片段,可正确显示所有目标字段:
{ "type": "Container", "$data": "${$root.hits.hits}", "items": [ { "$when": "${$index < 2}", "type": "TextBlock", "text": "日志内容: ${fields['log.@m']}", "wrap": true }, { "$when": "${$index < 2}", "type": "TextBlock", "text": "节点名称: ${fields['kubernetes.node.name'][0]}", "spacing": "Small" }, { "$when": "${$index < 2}", "type": "TextBlock", "text": "日志级别: ${fields['log.@l'][0]}", "spacing": "Small" } ] }
关键细节说明
- 非数组字段(如
log.@m):直接使用${fields['log.@m']}格式访问,完整保留原始属性名 - 数组类型字段(如
kubernetes.node.name、log.@l):Elastic返回的这类字段通常是单元素数组,需通过[0]提取第一个元素 - 该语法完全符合Adaptive Card的表达式规则,无需额外配置或修改数据源
误区修正
你之前尝试的${log.m}写法错误,原因是未保留原始字段的@符号,必须完整使用log.@m作为属性名并用方括号包裹。
内容的提问来源于stack exchange,提问作者Dend
相关产品推荐
相关产品推荐

