作者:来自 Elastic Teresa Alvarez Soler

了解如何在 Kibana 8.18+ 中使用变量控件来筛选单个可视化、调整时间间隔,并按不同字段进行分组。
用一个解决方案来观察、保护并搜索你的数据。从应用监控到威胁检测,Kibana 是你在关键用例中的多功能平台。立即开始免费的 14 天试用。
我们很高兴与你分享,从 8.18 版本开始以及所有 9.x 系列,变量控件现在已经在 Kibana 仪表板中可用!这个功能一直是仪表板用户最常请求的新增功能之一 —— 现在它终于来了 🎉 在过去的几个月里,我们持续扩展并优化变量控件,现在正是为它们推出专门博客文章的最佳时机。
什么是变量控件?
如果你之前使用过 Kibana 仪表板,你大概已经熟悉经典的仪表板控件 —— 那些方便的下拉菜单,会从你的数据中显示值,让你只需点几下就能完成筛选。

变量控件表面上看起来很相似,但它们有一个巧妙的变化:它们不会自动筛选仪表板上的每个面板,而是可以直接插入到单个可视化内部的 ES|QL 查询中。
这意味着你可以决定每个控件作用在哪里。更棒的是,你可以用它们做各种创意操作 —— 比如微调时间间隔、切换拆分字段,或即时改变可视化参数。基本上,它们让你的仪表板拥有真正的交互体验,让你更快、更轻松地获得洞察。
变量控件的使用场景
好吧,变量控件听起来很有用 —— 但你实际上能用它们做什么?下面是一些它们如何提升仪表板的例子:
筛选选定的可视化
想只筛选某些可视化,而让其他保持不变?变量控件正好能做到这一点。选择你希望响应的面板,并把它们接入可视化背后的 ES|QL 查询中即可。

选择不同的时间间隔
让你的用户能够在 “5 minutes”、“1 hour”、“1 day” 或任何合理的时间桶之间切换。构建一个带有预定义间隔的变量控件,并将它连接到你的时间序列查询中。

更改函数
不需要为每个操作创建多个图表,让仪表板用户自己选择想查看 max、avg、不同百分位数或其他任意聚合器即可。

你要如何创建它们?
创建变量控件最简单(也可能是最令人愉悦)的方式,就是直接在可视化中的 ES|QL 查询编辑器里完成。只需开始输入你的查询,使用自动完成菜单,Kibana 就会贴心地为你搭好控件的框架。
但如果你更喜欢从变量本身开始,你也可以前往:Add panel → Controls → Variable control,然后在创建控件后把变量添加到你的可视化中。



示例 1:带多值选择的筛选控件
1)选择一个由 ES|QL 查询驱动的可视化,并在 WHERE 子句里点击 “Create control”

2)你会自动被重定向到变量创建窗口,其中会为你选中 “Values from a query” 类型,并且变量名已经被预先填好。记住,控制项的名字必须以 “?...” 开头,才能在可视化查询中正常工作。
你通常需要像下面这样的查询,从字段中获取值,并根据仪表板中选择的时间范围更新这些值。
FROM <datasource_name>
| WHERE @timestamp <=?_tend and @timestamp >?_tstart
| STATS BY <field_name>

3)保存控制项后,你会看到它出现在仪表板的顶部,同时你的可视化查询会被更新为使用该变量控制项的名字。

4)如果你想为控制项添加多值选择,需要在查询中使用 MV_CONTAINS 函数,并在第 2 步创建控制项时选择 “Allow multiple selections”(从 9.3 版本开始可用)。

示例 2:时间间隔控制
如果你在构建时间序列,可以轻松为你的日期直方图间隔添加变量控制:
1)在为时间序列编写 ES|QL 查询时,点击 “Create control”。在为间隔创建变量时,最好使用 TBUCKET 而不是 BUCKET,这样可以接受更易读的间隔,如 “1 hour”、“1 day”等。TBUCKET 很快还会提供一个自动选项,以便根据时间范围自动调整。

2)定义间隔,用于填充下拉菜单中的选项。

3)在下拉菜单中选择不同的间隔,观察你的可视化是如何变化的。

示例 3:函数变量
1)使用 “Static values” 类型的控制项创建变量,并将函数名称添加到下拉菜单的值中。重要的是,变量名必须以 “??...” 开头,以便替换函数。

2)在你的 ES|QL 查询中包含该变量名。

示例 4:字段变量
1)你可以使用 “Static values” 类型的控制项,并写下你想要的字段名称。重要的是,变量名必须以 “??...” 开头,才能在字段中生效。

2)在可视化查询中,在需要的地方引用该变量。

Discover 中的变量控制
变量控制不仅是仪表板的功能 —— 它们在 Discover 的 ES|QL 编辑器中也可用。你可以在 Discover 中创建控制项,以实现更快速的数据探索体验,并将它们带到仪表板,反之亦然。

技术细节
到现在,你可能已经注意到变量控制有一些规则——比如它们可以引用查询的哪些部分,以及你需要使用的命名前缀(“?...” 用于值,“??...” 用于字段或函数)。这是因为变量不仅仅是在客户端进行的简单字符串替换。它们实际上是查询语言中的一等公民(在 ES|QL 中称为参数)。
这种设计带来了几个重要优势。首先,Kibana 可以理解每个变量的上下文,从而为你自动生成并预填其配置。它也更安全:由于语言严格验证变量输入,它可以防止恶意注入,并在发现异常时优雅地报错。此外,通过将复杂的验证和错误处理移到服务器端而非客户端,还能提升性能和稳定性。关于性能的提示,最佳实践是构建包含快速查询的变量,因为它们会在仪表板加载前运行,慢查询可能会影响整个仪表板的性能。
当然,这种架构目前也有一些限制。变量尚不支持用于过滤的 “Any” 选项,也不能与某些操作符一起使用,如 LIKE 或 FROM(用于切换数据源)。好消息是?我们正在积极开发这些功能。
控制项的未来发展
我们不会止步于此!我们关注的一些改进方向包括:
✨ 能够将控制项放置在仪表板的任意位置
✨ 控制项链式操作 —— 一个控制项的输出成为下一个的输入
✨ 更好的选择选项,如变量的 “Any” 选择
✨ 新的控制类型(搜索型控制和数据源变量)
✨ 以及更多你们期待的质量改进,比如普通控制项的预过滤
如果你有想法或反馈,我们非常乐意听取。
原文:https://www.elastic.co/search-labs/blog/kibana-dashboard-interactivity-variable-controls-overview

1912

被折叠的 条评论
为什么被折叠?



