Elasticsearch Kibana 使用 原理
先概括 Elasticsearch 和 Kibana 的 使用场景,再说说它们的 基本原理和关系。
一、什么是 Elasticsearch 和 Kibana?
组件 | 简介 |
---|---|
Elasticsearch(ES) | 一个开源的、分布式的搜索和分析引擎,基于 Lucene,常用于日志分析、全文搜索、数据分析。 |
Kibana | 可视化工具,用于展示和分析存储在 Elasticsearch 中的数据。 |
二者常搭配使用,形成 ELK/Elastic Stack:
E(Elasticsearch)+ L(Logstash)+ K(Kibana)
二、使用场景
-
系统日志分析(如结合 Filebeat)
-
网站搜索引擎
-
运维监控(如 ELK Stack)
-
数据可视化报表
-
安全审计日志平台(SIEM)
三、基本原理与架构
1. Elasticsearch 原理
Elasticsearch 是一个 面向文档(JSON)的搜索引擎,主要原理如下:
✅ 数据结构
-
类似数据库的结构:
-
Index(索引):类似数据库
-
Document(文档):类似一行记录,格式为 JSON
-
Field(字段):JSON 的字段
-
✅ 核心功能
-
全文搜索:倒排索引(Inverted Index)
-
结构化查询:支持复杂的 bool 查询语法
-
聚合分析:如 avg、sum、terms(类似 SQL 的 GROUP BY)
-
分布式架构:数据可分片(Shard)和副本(Replica)
✅ 存储与搜索流程
-
数据以 JSON 格式写入(REST API 或 Beats 等)
-
被索引:建立倒排索引
-
查询时快速定位关键词或结构字段
-
返回结果(可带排序、分页、高亮)
2. Kibana 原理
Kibana 是连接到 Elasticsearch 的前端界面,其作用:
-
数据查询(Query DSL 封装)
-
图表报表:柱状图、饼图、表格、地图等
-
实时仪表板(Dashboard)
-
Dev Tools:直接写 ES 查询语句
-
Index Pattern 管理:定义 ES 数据结构视图
工作方式:
-
用户在 Kibana 中配置 Index Pattern(比如
log-*
) -
用 DSL 或 Lucene 查询语言查数据
-
Kibana 发请求到 Elasticsearch 获取数据
-
可视化展示分析结果
四、你怎么用 Elasticsearch 和 Kibana?
一个典型流程如下:
-
收集数据:使用 Filebeat 或 Logstash 把日志发送到 Elasticsearch
-
存储索引:Elasticsearch 将数据按字段建立索引
-
分析搜索:通过 Kibana 查询、过滤、聚合
-
展示可视化:仪表盘中展示趋势图、统计图、异常告警等
五、简单例子
你可以用 CURL 或 Kibana DevTools 执行以下查询:
GET /weblogs/_search
{"query": {"match": {"status": 500}},"aggs": {"by_url": {"terms": {"field": "url.keyword"}}}
}
查询所有状态码为 500 的日志,并统计各 URL 的数量。
总结一句话
Elasticsearch 是强大的搜索和分析引擎,Kibana 是它的可视化前端。两者结合可实现强大的数据洞察能力。