报表集成
编辑报表集成编辑
应用程序遵守一个契约,报表功能使用该契约来确定从 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; };
报表的 |
|
|
|
|
|
|
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 发送请求以测试生成报表,请使用包含 curl 命令的 shell 脚本,该命令会 POST 请求。这将避免在交互式 shell 中运行 curl 命令时可能发生的任何意外字符转义。