使用变量控件来提高 Kibana 仪表板的交互性

了解如何在 Kibana 8.18+ 中使用变量控件来筛选单个可视化内容、调整时间间隔,并在 Kibana 仪表板中按不同字段分组。

使用单一解决方案观察、保护和搜索数据。从应用程序监控到威胁检测,Kibana是您用于关键用例的多功能平台。立即开始 14 天免费试用

我们很高兴地宣布,从 8.18 版本和所有 9.x 系列开始,Kibana 仪表板现在可以使用变量控件。这一功能是仪表盘用户一直以来最为频繁要求新增的内容之一。如今,它终于上线啦 🎉 在过去的几个月里,我们持续拓展并优化变量控件,此刻正是为它们单独撰写一篇专题博客文章的绝佳时机。

变量控件是什么?

如果您以前用过 Kibana 仪表板,您可能知道我们经典的仪表板控件。那些方便的下拉菜单可以显示数据中的数值,让您只需点击几下就能筛选。

可变控件表面上看起来很相似,但却有巧妙的变化:它们并非自动筛选仪表板上的每个面板,而是可以直接插入单个可视化内部的 ES|QL 查询中

这意味着可以决定每个控件的适用范围。更妙的是,您可以将它们用于各种创意技巧,例如实时调整时间间隔、切换细分字段,或更改可视化参数。简而言之,它们为您的仪表板提供了真正的交互式体验,使您能够更快、更轻松地获得见解。

变量控件用例

好吧,变量控件听起来很有用,但您实际上能用它们做些什么?下面举例说明它们如何提升仪表盘的功能性:

筛选已选择的可视化内容

想要筛选部分可视化内容,但保留其他内容不变?变量控件功能可以让您做到这一点。选择要响应的面板,并在可视化的 ES|QL 查询中将它们连接起来。

选择不同的时间间隔

让用户可以在“5 分钟”、“1 小时”、“1 天”或任何合理的时间间隔之间切换。构建有预定义时间间隔的变量控件,并将其连接到时间序列查询。

更改函数

与其为每个操作创建多个图表,不如让仪表板用户选择自己想要查看最大值、平均值、不同百分位数或任何其他聚合器。

按不同字段分组

有时,您需要在调查过程中按不同维度对数据进行细分。通过变量控件,您可以定义多个“分组依据”字段,让仪表板用户选择有助于他们发现见解的字段。

如何创建?

创建变量控件的最简单(可能也是最有趣)方法是直接从可视化中的 ES|QL 查询编辑器中创建。只需开始输入查询,使用自动完成菜单,Kibana 就会帮助您创建。

但是如果您更喜欢以变量本身为基础开始创建,也可以前往:添加面板 → 控件 → 变量控件,然后在创建控件后将变量添加到可视化中。

示例 1:具有多值选择的筛选控件

1. 选择由 ES|QL 查询驱动的可视化,并在 WHERE 条件中单击“创建控件”。

2. 您将自动被重定向至变量创建弹出面板,此时“来自查询的值”这一类型已自动选定,并且变量的名称已经预填。请记住,控件的名称必须以“?...”开头,以便在可视化查询中使用。

您通常需要这样的查询来获取字段中的值,并根据仪表板中选择的时间范围进行更新:

3. 保存控件时,您会看到它出现在仪表盘的顶部,可视化查询也会用变量控件名称进行更新。

4. 如果要在控件中添加多值选择,则需要在查询中使用MV_CONTAINS函数,并在步骤 2 创建控件时选择“允许多选”(9.3 及更高版本可用)。

示例 2:时间间隔控制

如果您正在构建时间序列,可轻松地为日期直方图间隔添加一个变量控制:

1. 为时间序列编写 ES|QL 查询时,单击“创建控件”。为时间间隔创建变量时,最好使用 TBUCKET 而非 BUCKET,这样它就可以接受更具可读性的间隔,例如“1 小时”、“1 天”等。我们也会很快推出 TBUCKET 自动选项,以便自动适应时间范围。

2. 确定用于填充下拉菜单选项的时间间隔。

3. 在下拉菜单中选择不同的时间间隔,查看可视化如何变化。

示例 3:函数变量

  1. 用“静态值”类型控件构建一个变量,并在下拉菜单的值中添加函数名。为了替换函数,请使用以“??...”开头的变量名。

2. 在 ES|QL 查询中包含变量名称。

示例 4:字段变量

  1. 您可以使用“静态值”类型的控件,并填入所需字段的名称。为了让变量名在字段中生效,使用以“??...”开头的变量名非常重要。

2. 在可视化查询中引用想要的变量。

Discover 中的变量控件

变量控件不仅仅是仪表盘的功能,还可以直接在 Discover 的 ES|QL 编辑器中使用。您可以在 Discover 中构建控件,以获得更快的数据探索体验,并将其引入仪表盘,反之亦然。

技术细节

到现在为止,您可能已经注意到变量控件有一些规则,比如它们可以引用查询的哪些部分,以及您需要使用的命名前缀(“?...”用于值,“??...”用于字段或函数)。这是因为变量不仅仅是在客户端进行简单的字符串替换。它们实际上是查询语言本身最重要的因素(在 ES|QL 中称为参数)。

这种设计具有一些很大的优势。首先,Kibana 可以理解每个变量的上下文,这使我们能够自动为您生成并预先填充其配置。它也更加安全:由于该语言严格验证变量输入,因此可以防止恶意注入,并在出现异常时轻松处理错误。此外,它将复杂的验证和错误处理转移到服务器而不是客户端,从而提高了性能和稳定性。关于性能,最佳做法是创建包含快速查询的变量,因为它们在仪表盘之前加载,所以慢速查询会影响整个仪表盘的性能。

当然,这种架构暂时也有一些限制。变量尚不支持用于筛选的“Any”选项,目前也不能与LIKE FROM(用于切换数据源)等操作符结合使用。好消息是什么?我们正在着手添加这些功能。

控件的未来发展趋势

我们不会就此止步!我们所关注的一些改进包括:

✨ 在仪表板上随处放置控件的能力

✨ 控件链式连接:意味着一个控件的输出成为下一个控件的输入。

✨ 选择选项更理想,比如变量的“任意”选择

✨ 新控件类型(搜索类型控件和数据源变量)

✨ 以及更多您一直要求的生活质量改进,比如预筛选常规控件

如果您有任何想法或反馈,欢迎向我们提出。

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用