ELK合集持续更新(一):Elasticsearch概述
Elastic Inc - 上市公司
市场反应
- 2010年 第一次发布 2012年成立公司
- 成立6个月 160万次下载 首轮募到1000万美金风险投资
- 当前市值超过50亿美金 开盘当天涨幅94%
发展
- 2015.3月 收购Elastic Cloud 提供Cloud服务
- 2015.3月 收购PacketBeat
- 2016.9月 收购PreAlert - Machine Learning异常检测
- 2017.6月 收购Opbeat 进军APM (实时性能监控的解决方案)
- 2017.11月 收购SaaS厂商Swiftype 提供网站和App搜索
Elasticsearch - 开源软件
影响
- ES软件下载量 超3.5亿次
- 10万+社区成员
- 7200+订阅用户 分布在100+国家
- 用户 - github wiki百科 eBay livechat
- 云服务合作 - Elastic Amazon 阿里巴巴 腾讯
Elasticsearch理念
“不要求你必须是一位数据科学家才能把它用好”
Elasticsearch 后边简称 ES
ES概念
开源 分布式 近实时(Near Real Time) 搜索/分析引擎
(说白了 就是一个查询/聚合很快的 面向文档型数据库)
ES作用
功能角度
查询
- 搜索
- 海量数据 的 分布式存储及管理 – 效果 : 服务与数据的高可用 水平扩展
- 近实时搜索 性能卓越 – 效果 : 结构化 全文 地理位置 自动完成
- 聚合
- 海量数据的近实时分析 – 效果 : 数据快速统计分析
架构角度
放在哪
- 方式一 仅用于查询
- 方式二 用于存储并查询 – 直接替代数据库
- 使用场景
- 事务性要求不能高
- 数据更新不能频繁
- 使用场景
ES技术地位
对比同类技术排名第一
- Solr - Apache开源项目
- Splunk - 商业上市公司的日志分析软件
ES起源
Lucene
创始人 | 概念 | 历史 | 优点 | 缺点 |
---|---|---|---|---|
Doug Cutting - Hadoop之父 | 基于Java开发的搜索引擎类库 | 1999年创建 2005年成为Apache顶级开源项目 | 高性能 易扩展 | 只能基于Java语言开发;类库的接口学习曲线陡峭;原生并不支持水平扩展 |
ES诞生
创始人 | 源码语言 | 发展 |
---|---|---|
Shay Banon | Java | 2004年 基于lucene开发了Compass ; 2010年 重写并取名Elasticsearch(支持分布式 且 增加RestfulAPI-降低学习曲线 任何语言都可调用) |
ES版本新特性
0.4版本
- 发布时间 : 2010.2月 第一次发布
1.0版本
- 发布时间 : 2014.1月
2.0版本
- 发布时间 : 2015.10月
5.0版本
- 发布时间 : 2016.10月
- 新特性 :
- 性能提升
- 默认打分机制 从TF-IDF 改为 BM25
- 新功能
- 支持 Ingest节点
- Painless Scripting / Completion suggested支持
- 原生的JavaRest客户端
- 性能优化
- 内部引擎移除了避免统一文档并发更新的竞争锁 带来15%-20%的性能提升
- Instant aggregation 支持分片上聚合的缓存
- 新增了ProfileAPI
- 基于Lucene6.0
- 性能提升
6.0版本
- 发布时间 : 2017.10月
- 新特性
- 新功能
- 跨集群复制CCR
- 索引生命周期管理
- SQL支持
- 更好的升级和数据迁移
- 简化迁移 - 主要版本之间的迁移
- 加快恢复数据 - 全新的基于操作的数据复制框架
- 性能优化
- 有效存储稀疏字段的新方法 - 降低存储成本
- 索引时进行排序 - 加快排序的查询性能
- 基于Lucene7.0
- 新功能
7.0版本
- 发布时间 : 2019.4月
- 新特性
- 重大改进
- 正式废除单个索引下多个Type的支持
- 7.1开始 Security功能免费
- 部署兼容
- ECK - Elasticsearch Operator on Kubernetes(支持部署到K8S)
- 新功能
- New Cluster coordination
- Feature - Complete High Level REST Client
- Script Score Query
- 性能优化
- 默认的Primary Shard数从5改为1 - 避免Over Sharding
- 更快的Top K
- 基于Lucene8.0
- 重大改进
ES的分布式架构
分布式架构图
水平扩展
分布式作用
- 高可用 : 支持水平扩展 1个节点到数百节点
- 服务高可用 – 允许有节点停止服务
- 数据高可用 – 部分节点丢失 不丢数据
- 资源最大化利用 : 支持不同节点类型
- 支持Hot&Warm架构 (说白了就是配置高的主机存放常用数据 配置低的主机存放不咋用的数据)
- 节点可作为纯数据节点 纯调度节点 纯主节点等
ES的接入方式
方式一 RestfulAPI
用开发语言调用http请求ES
- Java
- .Net
- Python
- Ruby
- PHP
- Groovy
- Perl
方式二 JDBC&ODBC
参考
阮一名资料
官方文档
百度