自定义与钻取的交互编辑

面板具有内置的交互功能,可将过滤器应用于仪表板数据。例如,当你拖动时间范围或单击饼图切片时,将应用时间范围或饼图切片的过滤器。钻取允许你在保持交互上下文的同时自定义交互行为。

你可以向仪表板添加三种类型的钻取

  • 仪表板 — 从一个仪表板导航到另一个仪表板。例如,为 Lens 面板创建一个钻取,该钻取可从汇总仪表板导航到具有特定主机名过滤器的仪表板。
  • URL — 从仪表板导航到外部网站。例如,一个以特定主机名为参数的网站。
  • Discover — 从 Lens 仪表板面板导航到 Discover。例如,为 Lens 可视化创建一个钻取,该钻取会在 Discover 中打开可视化数据以供进一步探索。

第三方开发者可以创建钻取。要了解如何编写钻取代码,请参阅 此示例插件

创建仪表板钻取编辑

仪表板钻取使你能够从另一个仪表板打开一个仪表板,并带上时间范围、过滤器和其他参数,以便上下文保持不变。仪表板钻取可帮助你从新的角度继续分析。

例如,如果你有一个显示多个数据中心的日志和指标的仪表板,则可以创建一个钻取,该钻取可从显示多个数据中心的仪表板导航到显示单个数据中心或服务器的仪表板。

Drilldown on data table that navigates to another dashboard

你使用以下编辑器创建的面板支持仪表板钻取

  • Lens
  • 地图
  • TSVB
  • Vega
  • 基于聚合的 面积图、数据表、热力图、水平条形图、折线图、饼图、标签云和垂直条形图
  • Timelion
创建并设置要连接的仪表板编辑

使用 示例 Web 日志 数据创建仪表板并添加面板,然后在 [日志] Web 流量 仪表板上设置搜索和过滤器。

  1. 添加 示例 Web 日志 数据。
  2. 创建一个新的仪表板,单击 从库中添加,然后添加以下面板

    • [日志] 响应代码随时间变化 + 注释
    • [日志] 访问次数
  3. 时间过滤器 设置为 过去 30 天
  4. 保存仪表板。在 标题 字段中,输入 详细日志
  5. 打开 [日志] Web 流量 仪表板,然后设置搜索和过滤器。

    搜索: extension.keyword: ("gz" or "css" or "deb")
    过滤器: geo.src: US

创建仪表板钻取编辑

创建一个钻取,该钻取可从 [日志] Web 流量 仪表板打开 详细日志 仪表板。

  1. 打开 [日志] 按主机列出的错误 数据表的面板菜单,然后选择 创建钻取
  2. 单击 转到仪表板

    1. 为钻取命名。例如,查看详细信息
    2. 选择目标仪表板 下拉列表中,选择 详细日志
    3. 要使用 geo.src 过滤器、KQL 查询和时间过滤器,请选择 使用源仪表板中的过滤器和查询使用源仪表板中的日期范围
    4. 单击 创建钻取
  3. 保存仪表板。
  4. 在数据表面板中,将鼠标悬停在一个值上,单击 +,然后选择 查看详细信息

    Drilldown on data table that navigates to another dashboard

创建 URL 钻取编辑

URL 钻取使你能够从仪表板导航到外部网站。目标 URL 可以是动态的,具体取决于仪表板上下文或用户与面板的交互。要创建 URL 钻取,你需要将 变量 添加到 URL 模板,该模板用于配置钻取的行为。你使用可视化编辑器创建的所有面板都支持仪表板钻取。

Drilldown on pie chart that navigates to Github

某些面板支持多种交互,也称为触发器。用于创建 URL 模板变量 取决于你选择的触发器。URL 钻取支持以下类型的触发器

  • 单击 — 面板中的单个数据点。
  • 范围选择 — 面板中的值范围。

例如,单击 具有 {{event.value}},而 范围选择 具有 {{event.from}}{{event.to}}

创建 URL 钻取编辑

例如,如果你有一个显示来自 Github 存储库数据的仪表板,则可以创建一个 URL 钻取,该钻取可从仪表板面板打开 Github。

  1. 添加 示例 Web 日志 数据。
  2. 打开 [日志] Web 流量 仪表板。
  3. 在工具栏中,单击 编辑
  4. 创建环形图

    1. 单击 创建可视化
    2. 图表类型 下拉列表中,选择 环形图
    3. 可用字段 列表中,将 machine.os.keyword 拖动到工作区。
    4. 单击 保存并返回
  5. 打开环形图面板菜单,然后选择 创建钻取
  6. 单击 转到 URL

    1. 为钻取命名。例如,在 Github 上显示
    2. 对于 触发器,请选择 单击
    3. 要导航到 Kibana 存储库 Github 问题,请在 输入 URL 字段中输入以下内容

      https://github.com/elastic/kibana/issues?q=is:issue+is:open+{{event.value}}

      Kibana 会将 {{event.value}} 替换为与所选饼图切片关联的值。

    4. 单击 创建钻取
  7. 保存仪表板。
  8. 在环形图面板上,单击任何图表切片,然后选择 在 Github 上显示

    URL drilldown popup

  9. 在 Kibana 存储库问题列表中,验证切片值是否出现。

    Open ios issues in the elastic/kibana repository on Github

创建 Discover 钻取编辑

Discover 钻取使你能够从 Lens 仪表板面板打开 Discover,并带上时间范围、过滤器和其他参数,以便上下文保持不变。

例如,当你为饼图创建 Discover 钻取时,你可以单击饼图中的切片,并且只有该切片的文档会显示在 Discover 中。

Drilldown on bar vertical stacked chart that navigates to Discover

Discover 钻取仅受 Lens 面板支持。要在 Discover 中打开所有 Lens 仪表板面板数据,请选中 在 Discover 中打开面板数据

创建 Discover 钻取编辑

创建一个钻取,该钻取可从 示例 Web 日志 数据 [日志] Web 流量 仪表板打开 Discover

  1. 单击 编辑,打开 [日志] 字节分布 垂直堆叠条形图的面板菜单,然后选择 创建钻取
  2. 单击 在 Discover 中打开
  3. 为钻取命名。例如,在 Discover 中查看字节分布
  4. 要在新标签页中打开 Discover 钻取,请选择 在新标签页中打开
  5. 单击 创建钻取
  6. 保存仪表板。
  7. [日志] 字节分布 垂直堆叠条形图上,单击一个条形,然后选择 在 Discover 中查看字节分布

    Drilldown on bar vertical stacked chart that navigates to Discover

管理钻取编辑

更改钻取,为另一个面板复制钻取,以及删除钻取。

  1. 打开包含钻取的面板菜单,然后单击 管理钻取
  2. 管理 标签页上,使用以下选项

    • 要更改钻取,请单击要更改的钻取旁边的 编辑,进行更改,然后单击 保存
    • 要创建副本,请单击要更改的下钻旁边的 复制,输入下钻名称,然后单击 创建下钻
    • 要删除下钻,请选择要删除的下钻,然后单击 删除

URL 模板编辑

此功能处于测试阶段,可能会发生变化。其设计和代码不如正式的 GA 功能成熟,按原样提供,不作任何保证。测试功能不受正式 GA 功能支持 SLA 的约束。

URL 模板输入使用 Handlebars,这是一种简单的模板语言。Handlebars 模板看起来像带有嵌入式 Handlebars 表达式的常规文本。

https://github.com/elastic/kibana/issues?q={{event.value}}

Handlebars 表达式是一个 {{,一些内容,后跟一个 }}。执行下钻时,这些表达式将替换为仪表板和交互上下文中的值。

除了 内置 Handlebars 帮助程序之外,您还可以使用自定义帮助程序。

有关高级用例,请参阅 Handlebars 文档

自定义帮助程序 用例

json

以 JSON 格式序列化变量。

示例

{{json event}}
{{json event.key event.value}}
{{json filters=context.panel.filters}}

rison

rison 格式序列化变量。Rison 是 Kibana 应用程序中用于在 URL 中存储状态的常用格式。

示例

{{rison event}}
{{rison event.key event.value}}
{{rison filters=context.panel.filters}}

date

格式化日期。支持相对日期表达式(例如,“now-15d”)。有关不同的格式选项,请参阅 moment 文档。

示例

{{date event.from “YYYY MM DD”}}
{{date “now-15”}}

formatNumber

格式化数字。可以将数字格式化为货币、百分比、时间或带有小数位、千位和缩写的数字。有关不同的格式选项,请参阅 numeral.js

示例

{{formatNumber event.value "0.0"}}

lowercase

将字符串转换为小写。

示例

{{lowercase event.value}}

uppercase

将字符串转换为大写。

示例

{{uppercase event.value}}

trim

删除字符串开头和结尾的空格。

示例

{{trim event.value}}

trimLeft

删除字符串开头的空格。

示例

{{trimLeft event.value}}

trimRight

删除字符串结尾的空格。

示例

{{trimRight event.value}}

mid

按起始位置和要提取的字符数从字符串中提取子字符串。

示例

{{mid event.value 3 5}} - 从第三个字符开始提取五个字符。

left

从字符串中提取多个字符(从左侧开始)。

示例

{{left event.value 3}}

right

从字符串中提取多个字符(从右侧开始)。

示例

{{right event.value 3}}

concat

连接两个或多个字符串。

示例

{{concat event.value "," event.key}}

replace

替换字符串中的所有子字符串。

示例

{{replace event.value "stringToReplace" "stringToReplaceWith"}}

split

使用提供的分隔符拆分字符串。

示例

{{split event.value ","}}

encodeURIComponent

使用内置的 encodeURIComponent 函数对字符串进行转义。

encodeURIQuery

使用内置的 encodeURIComponent 函数对字符串进行转义,同时保持“@”、“:”、“$”、“,”和“;”字符不变。

URL 模板变量编辑

URL 下钻模板有三个变量来源

  • 全局 静态变量,这些变量不会根据使用 URL 下钻的位置或执行下钻的用户交互而改变。例如:{{kibanaUrl}}
  • 上下文 变量,这些变量会根据创建和使用下钻的位置而改变。这些变量是从仪表板上的面板上下文中提取的。例如,{{context.panel.filters}} 允许访问应用于当前面板的过滤器。
  • 事件 变量,这些变量取决于触发器上下文。执行下钻时,将从交互上下文中动态提取这些变量。

要确保配置的 URL 下钻与您的数据一起按预期工作,您必须保存仪表板并在面板中进行测试。您可以通过单击 URL 模板输入右上角的 添加变量 来访问当前面板和所选触发器的可用变量的完整列表。

变量参考编辑
来源 变量 描述

全局

kibanaUrl

Kibana 基本 URL。对于创建在 Kibana 中导航的 URL 下钻很有用。

上下文

context.panel

当前仪表板面板提供的上下文。

context.panel.id

面板的 ID。

context.panel.title

面板的标题。

context.panel.filters

应用于面板的 Kibana 过滤器列表。
提示:与 rison 帮助程序结合使用,以进行内部 Kibana 导航并保留当前过滤器。

context.panel.query.query

当前查询字符串。

context.panel.query.language

当前查询语言。

context.panel.timeRange.from
context.panel.timeRange.to

当前时间选择器值。
提示:与 date 帮助程序结合使用以格式化日期。

context.panel.indexPatternId
context.panel.indexPatternIds

面板使用的数据视图 ID。

context.panel.savedObjectId

面板后面的已保存对象的 ID。

单击

event.value

单击的数据点后面的值。

event.key

单击的数据点后面的字段名称

event.negate

布尔值,指示单击的数据点是否导致否定过滤器。

event.points

某些可视化具有可单击的点,这些点会发出多个数据点。如果单个值不足,请使用数据点列表。

示例

{{json event.points}}
{{event.points.[0].key}}
{{event.points.[0].value}} {{#each event.points}}key=value&{{/each}}

注意

{{event.value}}{{event.points.[0].value}} 的简写
{{event.key}}{{event.points.[0].key}} 的简写

行单击

event.rowIndex

数字,表示单击的行,从 0 开始。

event.values

将对其执行操作的行的所有单元格值的数组。要访问列值,请使用 {{event.values.[x]}},其中 x 表示列号。

event.keys

每个列的字段名称数组。

event.columnNames

列名称数组。

范围选择

event.from
event.to

所选范围的 fromto 值,以数字表示。
提示:考虑使用 date 帮助程序进行日期格式化。

event.key

所选范围后面的聚合字段(如果可用)。