报表集成
编辑报表集成
编辑应用程序遵循一个契约,报表功能使用该契约来确定从 Kibana 请求数据导出的所需信息,以及如何生成和存储报表。
这些页面记录了内部 API,并且不保证在 Kibana 的未来版本中得到支持。但是,这些文档将保持最新,以反映 Kibana 中报表集成的当前实现。
报表导出类型
编辑“导出类型”是插入到 Kibana 报表框架中的代码片段,负责代表 Kibana 应用程序导出数据。这些代码片段以 TypeScript 类的形式实现,这些类扩展了一个抽象基类,并实现了用于控制报表作业创建以及异步生成报表内容的方法。它们的 createJob
方法通过接受 jobParams 对象并返回“任务有效负载”对象来处理创建报表作业的请求。它们的 runTask
方法通过接受从 createJob
函数创建的任务有效负载对象来生成报表内容,然后将该对象存储在 Elasticsearch 的系统索引中。
分享菜单扩展
编辑X-Pack 服务(例如报表功能)会向 Kibana 平台的 share
插件注册,以注册可用于使内容可共享的其他操作。
生成报表作业 URL
编辑要生成新的报表作业,不同的导出类型需要不同的 jobParams
对象,这些对象经过 Rison 编码,并用作报表生成端点 URL 中的 jobParams
查询字符串变量。如果您使用上述 分享插件注册,则此详细信息将被抽象化。如果您的应用程序不使用分享菜单扩展,则必须生成 URL 并向该 URL 创建 POST 请求。
基本作业参数
编辑每种导出类型都需要报表作业参数的某些字段。
interface BaseParams { title: string; objectType: string; browserTimezone: string; version: string; };
报表的 |
|
当使用内部报表 API 时,会自动添加 |
|
当使用内部报表 API 制作作业参数时,会自动添加 |
|
当使用内部报表 API 时,会自动添加 |
CSV
编辑CsvSearchSource 的作业参数
编辑用于生成 CSV 报表的导出类型在 Discover 中可用,它使用“搜索源”对象。此导出类型在代码中称为 csv_searchsource
。CSV 报表作业的配置使用包含 BaseParams
和以下字段的接口表示。要创建 CSV 报表的请求,这些必需的作业参数会经过 Rison 编码为报表生成 URL 的查询字符串变量
interface JobParamsCSV { searchSource: SerializedSearchSourceFields; columns?: string[]; };
CsvFromSavedObject 的作业参数
编辑一种更新的用于生成 CSV 报表的导出类型可用,目前仅通过 API 可用。此导出类型在代码中称为 csv_v2
。
interface JobParamsCsvFromSavedObject { locatorParams: LocatorParams[]; };
作业有效负载
编辑在报表生成 URL 的路由处理程序收到作业参数后,会自动将一个额外的字段添加到作业参数中的字段
interface TaskPayloadCSV { pagingStrategy: 'scan' | 'pit' }
|
PDF 和 PNG
编辑作业参数
编辑PDF 或 PNG 报表作业的配置使用包含 BaseParams
和以下字段的接口表示。要创建这些报表类型之一的请求,这些必需的作业参数会编码为报表生成 URL 的查询字符串变量
interface BaseParamsPDFV2 { layout: { id: string; dimensions: { height: number; width: number; }; }; locatorParams: LocatorParams[]; } interface BaseParamsPNGV2 { layout: { id: string; dimensions: { height: number; width: number; }; }; locatorParams: LocatorParams; }
PDF 导出的可用 |
|
|
|
PNG 导出的唯一可用 |
|
生成 PNG 报表的参数允许为 |
应用程序如何使自己具备屏幕截图功能
编辑生成 PDF 时,报表导出类型启动的无头浏览器会运行一个脚本,该脚本会在 DOM 中查找多个属性,以确定应拍摄哪些元素的屏幕截图以及可视化何时完成渲染。
打印布局会拍摄每个具有 data-shared-item
属性的元素的屏幕截图,并将各个屏幕截图包含在 PDF 中。打印布局还在与 data-shared-item
相同的 HTMLElement 上使用 data-title
和 data-description
属性来指定标题和描述。
保留布局会拍摄具有 data-shared-items-container
属性的元素的屏幕截图。此外,报表将调整具有 data-shared-items-container
的元素的大小,使其成为布局尺寸中指定的大小。保留布局还在具有 data-shared-items-container
属性的 HTMLElement 上使用 data-title
和 data-description
属性来指定整个 PDF 的标题/描述。
报表需要确定所有可视化何时完成渲染,以便它可以开始拍摄屏幕截图。如果有多个可视化,则应指定 data-shared-items-count
属性,以使报表知道要查找多少个可视化。报表将查看每个具有 data-shared-item
属性的元素,并使用相应的 data-render-complete
属性和 renderComplete
事件来监听渲染完成。当可视化渲染完成时,data-render-complete
属性应设置为“true”,并且应调度一个自定义 DOM renderComplete
事件。
如果报表作业使用多个 URL,则在查找任何 data-shared-item
或 data-shared-items-count
属性之前,它会等待指定正在加载哪个页面的 data-shared-page
属性。
使用 POST URL 进行调试
编辑开发人员可以从具有报表功能的应用程序捕获 POST URL,以访问公共 API 报表生成端点中的 jobParams
查询字符串变量。查询字符串变量可以通过 URL 解码器传递,然后通过 Rison 到 JSON 的转换器传递,以使作业参数具有人类可读性。
如果尝试将请求发送到 POST URL 以测试生成报表,请使用包含 POST 请求的 curl 命令的 shell 脚本。这将避免在交互式 shell 中运行 curl 命令时可能发生的任何意外字符转义。