hi,我是蛋挞,一个初出茅庐的后端开发,希望可以和大家共同努力、共同进步!
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情
- 起始标记->概述(4讲):「01 | 课程介绍」
- 结尾标记->概述(4讲):「04 | Elastic Stack家族成员及其应用场景」
Elasticsearch 官网
Elasticsearch 能做什么?
Elasticsearch 是一款非常强大的开源搜索及分析引擎。可以帮助你从海量数据中,快速找到相关的信息。 除了搜索,结合 Kibana、Logstash、Beats,Elastic Stack 还被广泛运用在大数据近实时分析领域,包括日志分析、指标监控、信息安全等多个领域。可以实现探索海量结构化、非结构化数据,按需创建可视化报表,对监控数据设置报警阈值。甚至通过使用机器学习技术,自动识别异常状况。
课件地址
起源 - Lucene
- 基于Java语言开发的搜索引擎类库
- 创建于1999年,2005年成为Apache顶级开源项目
- Lucene具有高性能、易扩展的优点
- Lucene的局限性:
- 只能基于Java语言开发
- 类库的接口学习曲线陡峭
- 原生并不支持水平扩展
Elasticsearch的诞生
- 2004 年 Shay Banon 基于 Lucene 开发了 Compass
- 2010 年 Shay Banon 重写了 Compass, 取名Elasticsearch
- 支持分布式,可水平扩展
- 降低全文检索的学习曲线, 可以被任何编程语言调用
Elasticsearch的分布式架构
- 集群规模可以从单个扩展至数百个节点
- 高可用 & 水平扩展
- 服务和数据两个维度
- 支持不同的节点类型
- 支持 Hot & Warm 架构
支持多种方式集成接入
- 多种编程语言的类库(www.elastic.co/guide/en/el…)
- Java / .NET / Python / Ruby / PHP / Groovy / Perl
- RESTful API v.S Transport API
- 9200 v.S 9300 (建议使用RESTful API)
- JDBC & ODBC
Elasticsearch的主要功能
搜索 —— 聚合
- 海量数据的分布式存储以及集群管理
- 服务与数据的高可用,水平扩展
- 近实时搜索,性能卓越
- 结构化 / 全文 / 地理位置 / 自动完成
- 海量数据的近实时分析
- 聚合功能
新特性 5.x
- Lucene 6.x,性能提升,默认打分机制从 TF-IDF 改为 BM 25
- 支持 Ingest 节点/ Painless Scripting / Completion suggested 支持 / 原生的Java REST客户端
- Type 标记成 deprecated, 支持了 Keyword 的类型
- 性能优化
- 内部引擎移除了避免同一文档并发更新的竞争锁,带来15% - 20%的性能提升
- Instant aggregation, 支持分片上聚合的缓存
- 新增了 Profile API
新特性 6.x
- Lucene 7.x
- 新功能
- 跨集群复制(CCR)
- 索引生命周期管理
- SQL的支持
- 更友好的的升级及数据迁移
- 在主要版本之间的迁移更为简化,体验升级
- 全新的基于操作的数据复制框架,可加快恢复数据
- 性能优化
- 有效存储稀疏字段的新方法,降低了存储成本
- 在索引时进行排序,可加快排序的查询性能
新特性 7.x
- Lucene 8.0
- 重大改进-正式废除单个索引下多Type 的支持
- 7.1开始,Security 功能免费使用
- ECK - Elasticseach Operator on Kubernetes
- 新功能
- New Cluster coordination
- Feature- Complete High Level REST Client
- Script Score Query
- 性能优化
- 默认的Primary Shard数从5改为1,避免 Over Sharding
- 性能优化,更快的Top K
Elastic Stack 生态圈
LogStash:数据处理通道
- 开源的服务器端数据处理通道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中
- Logstash 诞生于2009年,最初用来做日志的采集与处理
- Logstash 创始人 Jordan Sisel
- 2013年被 Elasticsearch 收购
LogStash 特性
- 实时解析和转换数据
- 从 IP 地址破译出地理坐标
- 将 PII 数据匿名化,完全排除敏感字段
- 可扩展
- 200多个插件 (日志/数据库/Arcsigh/Netflow)
- 可靠性安全性
- Logstash会通过持久化队列来保证至少将运行中的事件送达一次
- 数据传输加密
- 监控
Kibana:可视化分析利器
- Kibana 名字的含义= Kiwifruit + Banana
- 数据可视化工具,帮助用户解开对数据的任何疑问
- 基于 Logstash 的工具,2013 年加入 Elastic 公司
Elastic 的发展
- 2015 年 3 月收购 Elastic Cloud,提供 Cloud 服务
- 2015 年 3 月收购 PacketBeat
- 2016 年 9 月收购 PreAlert - Machine Learning 异常检测
- 2017 年 6 月收购 Opbeat 进军 APM
- 2017 年 11 月收购 SaaS 厂商 Swiftype, 提供网站和 App 搜索
- 2018 年 X-Pack 开源
BEATS - 轻量的数据采集器
[www.elastic.co/cn/ products/beats](www.elastic.co/cn/ products/beats)
X-Pack:商业化套件
- 6.3之前的版本,X-Pack 以插件方式安装
- X-Pack开源之后,Elasticsearch & Kibana支持OSS版和Basic两种版本
- 部分X-Pack功能支持免费使用,6.8和7.1开始,Security 功能免费
- OSS, Basic, 黄金级,白金级
- www.elastic.co/cn/subscrip…
日志的重要性
- 为什么重要
- 运维:医生给病人看病。日志就是病人对自己的陈述
- 恶意攻击,恶意注册,刷单,恶意密码猜测
- 挑战
- 关注点很多,任何一个点都有可能引起问题
- 日志分散在很多机器,出了问题时,才发现日志被删了
- 很多运维人员是消防员,哪里有问题去哪里
日志管理
Elasticsearch 与数据库的集成
- 单独使用Elasticsearch存储
- 以下情况可考虑与数据库集成
- 与现有系统的集成
- 需考虑事务性
- 数据更新频繁
指标分析 / 日志分析
总结
Elasticseach是一款开源的搜索和分析引擎,具有极好的性能,天生支持水平扩展,RESTful的接口也支持各种语言,方便做集成的接入,还有良好的社区支撑。Elastic Stack基于Elasticsearch、LogStash、Kibana构建出的一整套的生态系统,适合大量的应用场景。关于架构的接入,具体的架构结合项目的使用场景,在搜索类的时候推荐将数据库和Elasticseach同步,在日志类的场景的时候可以引入Kafka这样的缓冲层进行缓冲。
此文章为2月Day1学习笔记,内容来源于极客时间《Elasticsearch 核心技术与实战》