一、起源-Lucene
《1.》Elasticsearch是基于Lucene开发的。
《2.》Lucene是基于Java语言开发的搜索引擎类库,创建于1999年,2005年成为Apache顶级开源项目。
《3.》Lucene具有高性能、易扩展的优点。
《4.》Lucene的局限性:
①只能基于Java语言开发
②类库的接口学习曲线陡峭
③原生并不支持水平扩展
二、Elasticsearch的诞生
《1.》2004年Shay Banon基于Lucene开发了Compass
《2.》2010年Shay Banon重写了Compass,取名Elasticsearch
①支持分布式,水平可扩展
②降低全文检索的学习曲线,可以被任何编程语言调用
三、Elasticsearch的分布式架构
《1.》集群规模可以从单个扩展至数百个节点
《2.》高可用 & 水平扩展
服务和数据两个维度
《3.》支持不同的节点类型
①支持Hot & Warm架构
四、支持多种方式集成接入
《1.》多语言支持(Java | .Net | Python | Ruby | Php | Groovy | Perl)
https://www.elastic.co/guide/en/elasticsearch/client/index.html
《2.》Restful API & Transport API
9200 & 9300 (建议使用RESTful API)
《3.》JDBC & ODBC
五、Elasticsearch的主要功能
《1.》海量数据的分布式存储 以及 集群管理
服务和数据的高可用,水平扩展
《2.》近实时搜索,性能卓越
结构化 | 全文 | 地理位置 | 自动完成
《3.》海量数据的近实时分析
聚合功能
六、Elasticsearch的版本与升级
《1.》0.4 : 2010年2月第一次发布
《2.》1.0 : 2014年1月
《3.》2.0 : 2015年10月
《4.》5.0 :2016年10月
《5.》6.0 :2017年10月
《6.》7.0 :2019年4月
https://www.elastic.co/cn/support/eol
1. 5.X的新特性
《1.》使用Lucene 6.X ,性能提升,默认打分机制从TF-IDF 改为 BM25
《2.》支持Ingest节点 | Painless Scripting | Completion suggetsted 支持 | 原生的Java REST客户端支持
《3.》Type标记为deprecated ,支持了keyword的类型
《4.》性能优化
① 内部引起移除了避免同一个文档并发更新的竞争锁,带来了 15% - 20%的性能提升
② Instant aggregation ,支持分片上聚合的缓存
③ 新增了Profile API
2. 6.X 新特性
《1.》使用了Lucene 7.X
《2.》新功能
① 跨集群复制 (CCR)
② 索引生命周期管理
③ SQL的支持
《3.》更友好的升级以及数据迁移
① 在主要版本之间的迁移更为简单,体验更好
② 全新的基于操作的数据复制框架,可以加快恢复数据
《4.》 性能优化
① 有效存储稀疏字段的新方法,降低了存储成本
② 在索引时进行排序,可以加快排序的查询性能
3. 7.X 新特性
《1.》使用Lucene 8.0
《2.》重大改进 - 正式废除单个索引下多Type的支持
《3.》7.1开始 ,Security 功能免费使用
《4.》支持K8S ,ECK - Elasticsearch Operator on Kubernets
《5.》新功能
① New Cluster coordination
② Feature-Complete High Level REST Client
③ Scipt Score Query
《6.》性能优化
① 默认的Primary Shard数从5 改为 1,避免Over Sharding
② 性能优化,更快的Top K
七、Elastic Stack 生态圈
1.Logstash数据处理通道
《1.》开源的服务器端数据处理管道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中。
《2.》Logstash 诞生于2009年,最初用来做日志的采集与处理
《3.》Logstash 创始人 Jordan Sisel
《4.》2013年被Elasticsearch 收购
2.Logstash 特性
《1.》实时解析和转换数据
① 从IP地址破译出地理坐标
② 将PII数据匿名化,完全排除敏感字段
《2.》可以扩展
① 200个插件(日志 | 数据库 | Arcsigh | Netflow)
《3.》可靠性安全性
① Logstash 会通过持久化队列来保证至少将运行中的时间送达一次
② 数据传输加密
《4.》监控
3.Kibana 可视化分析利器
《1.》 Kibana 名字的含义 = Kiwifruit + Banana
《2.》数据可视化工具 ,帮助用户解开对数据的任何疑问
《3.》基于Logstash的工具,2013年加入Elastic公司
4.Elastic stack的发展
《1.》2015年3月收购Elastic Cloud ,提供Cloud服务
《2.》2015年3月收购PacketBeat
《3.》2016年9月收购PreAlert - Machine Learning 异常检测
《4.》2017年6月收购Opbeat 进军 APM
《5.》2017年11月收购SaaS厂商Swiftype ,提供网站和APP搜索
《6.》2018年 X-Pack开源
5.Beats - 轻量的数据采集器
满足不同的数据源
https://www.elastic.co/cn/products/beats
6.X-pack 商业化套件
https://www.elastic.co/cn/subscriptions
《1.》6.3之前的版本 ,X-Pack以插件方式安装
《2.》X-Pack开源之后,Elasticsearch & kibana支持 OSS版 和 Basic两种版本
部分X-Pack功能支持免费使用,6.8和7.1开始,Security功能免费
《3》OSS , Basic , 黄金级 , 白金级
7.ELK 客户以及应用场景
https://www.elastic.co/cn/use-cases/
《1.》应用场景
① 网站搜索 | 垂直搜索 | 代码搜索
② 日志管理与分析 | 安全指标监控 | 应用性能监控 | WEB抓取舆情分
《2.》日志管理
《3.》Elaticsearch与数据库的集成
① 单独使用Elasticsearch存储【不建议这么用】
②以下情况可以考虑与数据库集成
<1.> 与现有系统集成
<2.> 需要考虑事务性
<3.> 数据更新频繁
《4.》指标分析 | 日志分析