10分钟快速入门海量数据搜索引擎Elasticsearch( 二 )


10分钟快速入门海量数据搜索引擎Elasticsearch

文章插图
写入操作
查询采用分布式搜索 , 如请求发给节点 3 后 , 请求会转发至索引的主分片或副本分片所在节点 。当然如果写入、查询均带有路由字段信息 。请求只会发送给部分分片 , 避免全量分片扫描 。这些节点完成查询后将结果返回给请求节点 , 由请求节点汇聚各个节点的结果返回给客户端 。
10分钟快速入门海量数据搜索引擎Elasticsearch

文章插图
查询操作
2.2 Lucene 原理介绍完 ES 集群基本原理 , 下面简单介绍下 ES 的底层存储引擎 Lucene 。首先 Lucene 是一款高性能的信息检索库 , 提供索引和检索基本功能 。ES 在此基础上解决可靠性、分布式集群管理等问题最终形成产品化的全文检索系统 。
Lucene 解决的核心问题便是全文检索 。与传统的检索方式不同 , 全文检索避免在查询时进行全部内容扫描 。比如数据写入后 , 首先会对写入的文档字段内容分词 , 形成词典表和与它关联的倒排表 。查询时由关键词分词结果直接匹配词典表内容 , 并获取关联的文档列表 , 快速获取结果集 。并通过排序规则 , 优先展示匹配度高的文档 。
10分钟快速入门海量数据搜索引擎Elasticsearch

文章插图
倒排索引
Lucene 为了加快索引速度 , 采用了 LSM Tree 结构 , 先把索引数据缓存在内存 。当内存空间占用较高或到达一定时间后 , 内存中的数据会写入磁盘形成一个数据段文件(segment) 。段文件内包含词典、倒排表、字段数据等等多个文件 。
10分钟快速入门海量数据搜索引擎Elasticsearch

文章插图
LSM Tree结构
为了兼容写入性能和数据安全性 , 如避免内存缓冲区里的数据因为机器故障丢失 。ES 在写内存的同时也会写事物日志 Translog 。内存里的数据会定期生成新的段文件 , 写入开销更低的文件系统缓存即可打开和读取实现近实时搜索 。
10分钟快速入门海量数据搜索引擎Elasticsearch

文章插图
写入缓冲与持久化
3. Elasticsearch 应用场景ES 的典型使用场景有日志分析、时序分析、全文检索等 。
3.1 日志实时分析场景日志是互联网行业基础广泛的数据形式 。典型日志有用来定位业务问题的运营日志 , 如慢日志、异常日志;用来分析用户行为的业务日志 , 如用户的点击、访问日志;以及安全行为分析的审计日志等 。
Elastic 生态提供了完整的日志解决方案 。通过简单部署 , 即可搭建一个完整的日志实时分析服务 。ES 生态完美的解决了日志实时分析场景需求 , 这也是近几年 ES 快速发展的一个重要原因 。日志从产生到可访问一般在 10s 级 , 相比于传统大数据解决方案的几十分钟、小时级时效性非常高 。ES 底层支持倒排索引、列存储等数据结构 , 使得在日志场景可以利用 ES 非常灵活的搜索分析能力 。通过 ES 交互式分析能力 , 即使在万亿级日志的情况下 , 日志搜索响应时间也是秒级 。日志处理的基本流程包含:日志采集 -> 数据清洗 -> 存储 -> 可视化分析 。Elastic Stack 通过完整的日志解决方案 , 帮助用户完成对日志处理全链路管理 。
10分钟快速入门海量数据搜索引擎Elasticsearch

文章插图
日志分析链路
其中:
  • 日志采集:通过轻量级日志采集组件 FileBeat 实时读取业务日志文件 , 发送数据至下游组件如 Logstash 。
  • 文本解析:利用正则解析等机制 , 将日志文本数据转换成结构化数据 。可使用独立的 Logstash 服务或 Elasticsearch 内置的轻量级数据处理模块 Ingest Pipeline , 完成数据清洗和转换 。
  • 数据存储:通过 Elasticsearch 搜索分析平台进行数据持久存储 , 提供全文搜索和分析能力 。
  • 可视化分析:通过功能丰富的图形界面 , 即可对日志数据进行搜索分析 , 如可视化组件 Kibana 。

10分钟快速入门海量数据搜索引擎Elasticsearch

文章插图
可视化组件Kibana
3.2 时序分析场景 时序数据是按时间顺序记录设备、系统状态变化的数据 。典型的时序数据有传统的服务器监控指标数据、应用系统性能监控数据、智能硬件、工业物联网传感器数据等 。早在 2017 年我们也基于 ES 进行了时序分析场景的探索 。时序分析场景具有高并发写入、低查询时延、多维分析的特点 。由于 ES 具有集群扩展、批量写入、读写带路由、数据分片等能力 , 目前已实现线上单集群最大规模达到 600+节点、1000w/s 的写入吞吐、单条曲线或单个时间线的查询延时可控制在 10ms 。另外 ES 提供灵活、多维度的统计分析能力 , 实现查看监控按照地域、业务模块等灵活的进行统计分析 。另外 , ES 支持列存储、高压缩比、副本数按需调整等能力 , 可实现较低存储成本 。最后时序数据也可通过 Kibana 组件轻松实现可视化 。


推荐阅读