背景介绍
- Es 是一个开源软件,其所属公司是上市公司 Elastic Inc。
- 当前市值超过50亿美金,开盘当天涨幅达94%
- Elasticsearch 软件下载量,超3.5亿次
- 10W+的社区成员
- 7200+订阅用户,分布在100+国家
- 合作的云服务厂商:Elasic、Amazon、阿里巴巴、腾讯
Es 客户
同类产品比较
¶存储类型软件的一个比较
¶同类产品(搜索引擎)
- Es-开源分布式搜索分析引擎
- 近实时(Near Real Time)
- 分布式存储/搜索/分析引擎
- Solr(Apache 开源项目)
- Splunk(第一家上市的大数据公司,也有类似的产品)
¶Solr 和 Es 热门曲线
基于 lucene
Es 和 Solr 底层引擎都是 Lucene。Lucene 具有以下特点:
- 基于 Java语言开发的搜索引擎类库
- 创建于1999年,2005年称为 Apache 顶级开源项目
- Lucene具有高性能、易扩展的优点
- 局限性:
- 只能基于 Java 语言开发
- 累哭的接口学习曲线陡峭
- 原生不支持水平扩展,搜索引擎需要存储海量数据,如果不支持水平扩展,需要自己做很多开发
Elasticsearch 的分布式架构
- 集群规模可以从单个扩展到数百个节点
- 高可用&水平扩展
- 服务和数据两个维度
- 支持不同的节点类型
- 支持 Hot&Warm 架构
支持多种方式集成接入
- 多种编程语言的类库
- Java/.NET/Python/Ruby/PHP/Groovy/Perl
- RESTful API v.s. Transport API
- 9200 v.s. 9300(建议使用 RESTful API)
- 最新支持JDBC&ODBC接入
主要功能
- 海量数据的分布式存储以及集群管理
- 服务与数据的高可用,水平扩展
- 近实时搜索,性能卓越
- 结构化、全文、地理位置、自动完成
- 海量数据的近实时分析
- 数据聚合功能
版本
- 0.4:2010年2月第一次发布
- 1.0:2014年1月
- 2.0:2015年10月
- 5.0:2016年10月
- 新特性-5.x
- Lucene 6.x,性能提升,默认打分机制从 TF-IDF 改为 BM25
- 支持 Ingest 节点/Painless Scripting /Completion suggested 支持/ 原生的 Java REST 客户端
- Type 标记成 deprecated,支持了 Keyword 的类型
- 性能优化
- 内部引擎移除了避免同一文档并发更新的竞争锁,带来15%-20%的性能提升
- Instant aggregation,支持分片上聚合的缓存
- 新增了 Profile API,方便性能trouble shooting
- 新特性-5.x
- 6.0:2017年10月
- 新特性-6.x
- Lucene 7.x
- 新功能
- 跨集群复制(CCR)
- 索引生命周期管理
- SQL 的支持
- 更友好的升级及数据迁移
- 在主要版本之间的迁移更为简化,体验升级
- 全新的基于操作的数据复制框架,可加快恢复数据
- 性能优化
- 有效存储稀疏字段的新方法,降低了存储成本
- 在索引时进行排序,可加快排序的查询性能
- 新特性-6.x
- 7.0:2019年4月
- 新特性 7.x
- Lucene 8.0
- 重打改进-正式废除单个索引下多 Type 的支持
- 7.1开始,Security 功能免费使用
- ECK-Elasticsearch Operator on Kubernetes
- 新功能
- New Cluster coordination
- Feature-Complete High Level REST Client
- Script Score Query
- 性能优化
- 默认的 Primary Shard 数从5改为1,避免 Over Sharding
- 更快的 Top K
- 新特性 7.x
Elastic Stack 生态圈
¶Logstash: 数据处理管道
- 开源的服务端数据处理管道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中
- Logstash 诞生于2009年,最初用来做日志的采集和处理
- 2013年被 Elasticsearch 收购
¶Logstash 特性
- 实时解析和转换数据
- 从 IP 地址破译出地理坐标
- 将 PII 数据匿名化,完全排除敏感字段
- 可扩展
- 200多个插件(日志/数据库/Arcsigh/Netflow)
- 可靠性安全性
- Logstash 会通过持久化队列来保持至少将运行中的事件送达亿次
- 数据传输加密
- 监控
¶Kibana: 可视化分析利器
- Kibana 名字的含义 = Kiwifruit + Banana
- 数据可视化工具,帮助用户解开对数据的任何疑问
- 基于 Logstash 的工具,2013年加入 Elastic 公司
¶BEATS: 轻量的数据采集器
¶X-Pack: 商业化套件
- 6.3版本之前的版本,X-Pack以插件方式安装
- X-Pack 开源之后,Elasticsearch & Kibana支持OSS 版和 Basic 两种版本
- 部分 X-Pack 功能支持免费使用,6.8和7.1开始,Security 功能免费
- OSS,Basic,黄金级,白金级
¶ELK客户及应用场景
公布了一些大量客户使用的案例
- 网站搜索/垂直搜索/代码搜多
- 日志管理与分析/安全指标监控/应用性能监控
日志的重要性
¶为什么重要
- 运维:医生给病人看病。日志就是病人对自己的陈述
- 恶意攻击,恶意注册,刷单,恶意密码猜测
¶挑战
- 关注点很多,任何一个点都有可能引起问题
- 日志分散在很多机器,除了问题时,才发现日志被删了
- 很多运维人员时消防员,哪里有问题去哪里
¶Es的日志管理方案
Es 天然的对日志管理进行了支持,可以很好地解决以上问题:
日志经收集入库之后如果发现异常还可以及时地发出一些警告。用户可以在 Kibana 地界面很容易地看到这些日志,并使用 Es 强大地搜索功能进行日志搜索,且可以通过机器学习地方式及时发现异常并发出警告。
Es使用架构
¶搜索场景
-
单独使用 Elasticsearch 存储数据,架构简单。
-
以下情况可考虑与数据库集成,建立合适地同步机制进行数据同步
-
与现有系统的集成
-
需考虑事务性
-
数据更新频繁
-
¶指标分析/日志分析
- 第一阶段时数据抓取,可以通过自己写地一些 Java 业务客户端或者 beats 进行抓取
- 实际情况数据量很大,需要引入一些 mq 或者消息中间件进行缓存
- Logstash 从缓存层获取数据并格式化输入到 Es
- 可以使用 Kibana 或者 Grafana 图形化工具进行可视化分析
ES 官方网站和文档
es官网为:https://www.elastic.co/
es 官方文档为(以7.1为例):https://www.elastic.co/guide/en/elasticsearch/reference/7.1/index.html