Elastic Kibana插件开发核心构建模块解析
kibana Your window into the Elastic Stack 项目地址: https://gitcode.com/gh_mirrors/ki/kibana
前言
在Elastic Kibana生态系统中进行插件开发时,理解其架构中的核心构建模块至关重要。这些模块按照抽象层级可分为高级和低级两类,开发者需要根据具体需求选择合适的构建方式。本文将系统性地介绍Kibana插件开发中的关键构建模块,帮助开发者构建高效、可维护的插件应用。
构建模块层级概述
高级构建模块特点
- 内置丰富功能
- 维护成本低
- 功能迭代对使用者影响小
- 提供跨Kibana的一致用户体验
- 灵活性相对较低
低级构建模块特点
- 提供更高灵活性
- 需要更多集成代码
- 维护成本较高
- 可能导致UI/UX不一致
选择建议:优先考虑高级构建模块,仅在特殊需求时使用低级模块。例如,使用索引模式(Index Patterns)和搜索源(Search Source)可自动获得运行时字段支持,而直接使用搜索策略(Search Strategy)则需要额外开发工作。
应用UI构建模块
1. 查询栏(Query Bar)
由数据插件提供的高级组件,支持:
- Lucene和KQL查询语言
- 保存的查询
- 索引模式集成
- 数据搜索和过滤功能
适用场景:需要提供数据搜索和过滤功能的插件。
2. 仪表板可嵌入组件(Dashboard Embeddable)
最高级别的UI组件之一,提供:
- 可视化图表集合
- 与查询栏无缝集成
- 自动支持所有注册的可嵌入功能
- 上下文菜单UI操作支持
3. Lens可嵌入组件
基于表达式语言构建,特点包括:
- 自动处理查询构建和图表渲染
- 与索引模式和UI操作集成
- 支持链接到预填充的Lens编辑器
4. 地图可嵌入组件(Map Embeddable)
专为地图嵌入场景设计,提供完整的地图功能集成。
5. Kibana页面模板(KibanaPageTemplate)
所有Kibana页面应使用此模板,它:
- 简化常见页面设置
- 符合Kibana特定要求
- 基于EUI页面模板构建
数据搜索相关模块
1. 索引模式(Index Patterns)
高级抽象层,功能包括:
- 空间感知(Space-aware)
- 定义和自定义搜索数据
- 支持运行时字段
- 字段格式化和标签定制
最佳实践:应优先考虑使用索引模式,因为它是许多其他高级模块的基础。
2. 搜索源(Search Source)
高级搜索服务特性:
- 需要索引模式
- 抽象了原始ES DSL和搜索端点
- 内部使用ES搜索策略
适用场景:需要查询ES数据但未使用高级UI组件时。
3. 搜索策略(Search Strategies)
低级构建模块,特点:
- 抽象搜索细节
- 轻量级ES查询抽象
- 支持多种查询语言
- 需要较多集成工作
4. 表达式(Expressions)
低级模块,适用于:
- 高级搜索需求
- 数据连接和操作
- Lens和Canvas的基础
建议:大多数开发者应优先使用Lens或Search Source。
数据持久化与配置
1. 保存对象(Saved Objects)
用于持久化应用级信息,提供:
- 批量导出/导入
- 空间共享和隔离
- 标签支持
示例:TODO应用中的每个TODO项可建模为保存对象。
2. 高级设置(Advanced Settings)
通过uiSettings服务实现应用级配置,如:
- 分页设置
- 显示选项
- 其他应用参数
集成构建模块
1. UI操作与触发器(UI Actions & Triggers)
实现跨应用集成,允许:
- 注册自定义操作
- 附加到现有触发器
- 上下文相关功能暴露
示例:地图应用可注册"在地图中查看"操作,在用户点击地理字段时显示。
2. 可嵌入组件(Embeddables)
实现与仪表板应用的集成,特点:
- 注册自定义UI组件
- 支持添加到仪表板
- 可扩展至Canvas工作区
结语
理解Kibana的这些核心构建模块是开发高质量插件的基础。高级模块提供了"开箱即用"的解决方案,而低级模块则提供了深度定制的可能性。开发者应根据具体需求权衡灵活性与维护成本,选择最适合的构建方式。随着Kibana生态的发展,这些模块也在不断演进,掌握它们将帮助开发者构建出与Kibana完美集成的插件应用。
kibana Your window into the Elastic Stack 项目地址: https://gitcode.com/gh_mirrors/ki/kibana
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考