这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
视频课程:极客时间 – 《Elasticsearch核心技术与实战》
为什么要学ElasticSearch
- 主要功能
- 分布式搜索引擎
- 大数据近实时分析引擎
- 分布式搜索引擎
- 产品特征
- 高性能,和T+1说不
- 容易使用 / 容易拓展
- 高性能,和T+1说不
- 互联网公司大量使用 ElasticSearch
- 阿里、腾讯、小米、饿了么、滴滴、携程等等
- 应用场景
- 网站搜索 / 垂直搜索 / 代码搜索
- 日志管理分析 / 安全指标监控 / 应用性能监控 / WEB抓取舆情
学习目标
- 开发
- 产品基本功能,底层工作原理,数据建模最佳实践
- 运维
- 容量规划;性能优化;问题诊断;滚动升级;
- 方案
- 搜索与如何解决搜索的相关性问题
- 大数据分析实践与项目实战,理论知识运用到实际场景
课程实战
- 1、电影搜索
- 2、Stack OverFlow 调查问卷数据分析
课程内容与结构
- ElasticSearch 入门与深入
- 环境搭建 / 搜索与聚合 / 架构原理 / 数据建模
- ElasticSearch 集群管理
- 水平扩展及性能优化 / 最佳实践
- ELK 进行大数据分析
- 可视化分析 / 时序型数据 / 异常检测
- 项目实战和知识点回顾
- 电影搜索 / 问卷分析 / Elastic认证
三点学习建议
- 勤动手
- 本地搭建多节点的集群环境,理解分布式工作原理,执行教程中的每一个范例
- 多思考
- 结合实际的业务场景,深入思考,学会查询相关的技术文档
- 定目标
- 做一次分享,开发一个具体的项目,参加 Elastic 认证考试
ElasticSearch简介及其发展历史
从开源到上市
- Elastic Inc - 开源软件 / 上市 公司
- 当前市值 154.62(美股) 亿美元(2021/11/05 20:00:00),开盘当天涨幅达 94%
- ElasticSearch 软件下载量,超 3.5 亿次 【2018年官方数据 www.elastic.co/blog/ze-bel…
- 10 万 + 的社区成员
- 7200 + 订阅用户,分布在 100+ 国家
- 云服务 - Elastic,Amazon,阿里巴巴,腾讯
ElasticSearch 简介
- ElasticSearch -开源分布式搜索分析引擎
- 近实时(Near Real TIme)
- 分布式存储 / 搜索 / 分析引擎
- Solr (Apache 开源项目)
- Splunk (商业上市公司)
ElasticSearch v.s. Solr
起源 - Lucene
- 基于 Java 语言开发的搜索引擎库类
- 创建于 1999年,2005年成为 Apache 顶级开源项目
- Lucene 具有高性能、易拓展的优点
- Lucene 的局限性:
- 只能基于 Java 语言开发
- 类库的接口学习曲线陡峭
- 原生并不支持水平拓展
ElasticSearch的诞生
Shay Banon, ElasticSearch 创始人,“Search is something that any application should hava.”
- 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 /
Go
/JavaScript
- Java / .NET / Python / Ruby / PHP / Groovy / Perl /
ElasticSearch 的主要功能
- 海量数据的分布式存储以及集群管理
- 服务与数据的高可用,水平拓展
- 近实时搜索,性能卓越
- 结构化 / 全文 / 地理位置 / 自动完成
- 海量数据的近实时分析
- 聚合功能
市场反应
- 2010 年第一次发布;2012 年成立公司
- 成立 6个月,160万下载,首轮募到 1000万美金风险投资
- Rod Johnson – Spring Framework创始人
- Benchmark Capital / Data Collective
ElasticSearch 版本与升级
- 0.4 :2010 年 2 月 第一次发布
- 1.0: 2014 年 1 月
- 2.0:2015 年 10 月
- 5.0:2016 年 10 月
- 6.0:2017 年 10 月
- 7.0:2019 年 4 月
EOL Support - www.elastic.co/cn/support/…
新特性 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 功能免费试用 - 当前稳定版本 7.15
- 部署k8s ECK - ElasticSearch Operator on Kuberneetes
- 新功能
- New Cluster coordination
- Feature - Complete High Level REST Client
- Script Score Query
- 性能优化
- 默认的 Primary Shard 数从 5 改为 1,避免 Over Sharding
- 性能优化,更快的 Top K
Elastic Stack 家族成员及其应用场景
Elastic Stack 生态圈
Logstash:数据处理管道
- 开源的服务器端数据处理管道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中
- Logstash 诞生于 2009 年,最初用来做日志的采集于处理
- Logstash 创始人 Jordan Sisel
- 2013 年被 ElasticSearch 收购
- 社区文化:“Remember:if a new user has a bad time, it’s a bug in logstash”
Logstash 特性
- 实时解析和转换数据
- 从 IP 地址破译地理坐标
- 将 PII 数据匿名化,完全排除敏感数据
- 可扩展
- 200 多个插件(日志 / 数据库 / Arcsign / Netflow)www.elastic.co/guide/en/lo…
- 可靠性安全性
- Logstash 会通过持久化队列来保证至少将运行中事件传送一次
- 数据传输加密
- 监控
Kibana 可视化分析利器
- Kibana 名字的含义:Kiwifruit + Banana (猕猴桃 + 香蕉)
- Kibana 创始人: Rashid Khan
- 数据可视化工具,帮助用户解开对数据的任何查询
- 基于 Logatesh 的工具,2013 年加入 Elastic 公司
Kibana 特性
- 提供各种可视化的图表
- 可以通过机器学习的技术,对异常情况进行检测,用于提前发现可疑问题
BEATS - 轻量的数据采集器
Beats 是一款轻量级的数据采集器,采用 Go 语言编写。它集合了多种单一用途数据采集器。这些采集器安装后可用作轻量型代理,从成百上千或成千上万台机器向 Logstash 或 Elasticsearch 发送数据。
- 轻量 —— Beats 是数据采集的得力工具。将这些采集器安装在你的服务器中,它们就会把数据汇总到 Elasticsearch。如果需要更加强大的处理性能,Beats 还能将数据输送到 Logstash 进行转换和解析。
- 可拓展 —— 每款开源采集器都是以用于转发数据的通用库 libbeat 为基石。需要监控某个专用协议,可以自己构建采集器。
Beats 系列
X-Pack:商业化套件
- 6.3 之前的版本,X-Pack 以插件方式安装
- X-Pack 开源之后,ElasticSearch & Kibana 支持 OSS 版和 Basic 两种版本
- 部分 X-Pack 功能支持免费使用,6.8 和 7.1 开始,Security 功能免费
- OSS, Basic,黄金级, 白金级
日志的重要性
- 为什么重要
- 运维:医生给病人看病,日志就是病人对自己的陈述
- 恶意攻击,恶意注册,刷单,恶意密码猜测
- 挑战
- 关注点很多,任何一个点都有可能引起问题
- 日志分散在很多机器,出了问题时 ,才发现日志被删了
- 很多运维人员是消防员,哪里有问题去哪里
日志管理
Elasticsearch 与数据库的集成
- 单独使用 ElasticSearch 存储
- 以下情况可考虑与数据库集成
- 与现有系统的集成
- 需考虑事务性
- 数据更新频繁
指标分析 / 日志分析流程
本文转载自: 掘金