ES学习(02):ElasticSearch简介及其发展历史

原文:ES(入门二):ElasticSearch简介及其发展历史

前言


在上篇文章ES(入门一):走进ElasticSearch中已经dui ES的简介做了介绍。这篇文章还是想就“ElasticSearch简介及其发展历史”作进一步补充。希望可以对ES的背景有更深的了解,个人觉得背景的了解也会有助于后面系统的学习。

背后的公司、愿景


我们都知道ES它是一款开源的、近实时、高性能的分布式搜索引擎,但是很多人可能不知道其背后的公司已经在纽约上市了,去年10月份的时候美国股市十分的萧条(很多人可能知道这个),但是有家公司他在上市首天开盘的涨幅就达到了94%,这其实就是ES背后的公司Elastic。

那我们先来看一个数字,ES为什么在资本市场受到这样的追捧:

  • 从开源到上市
从开源到上市.png
  • ElasticSearch 客户
ElasticSearch 客户.png
  • DBRanking2019年5月的数据库评测中 ,ES在Search Engine(搜索引擎)分类中名列第一


    图片.png

ElasticSearch简介


起源 - Lucene

图片.png

这个看着很帅气的男人他叫Doug Cutting,是Lucene的创始人,同时他也是Hadoop的创始人,被称为Hadoop之父。重点还是来看下Lucene有哪些特点:

(1)基于Java语言开大的搜索引擎类库
(2)创建于1999年,2005年成为Apache顶级开源项目
(3)Lucene具有高性能、以扩展的有点
(4)Lucene的局限性:

  • 只能基于Java语言开发
  • 类库的接口学习成本高
  • 原生并不支持水平扩展(这对于搜索引擎来说是一个非常大的问题)

ElasticSearch的诞生

图片.png

Shay Banon是ElasticSearch的创始人,他曾说过:“搜索是每一个软件都必须拥有的功能”

2004年Shay Banon基于Lucene开发了Compass(ES的前身)

2010年Shay Banon重写了Compass,取名ElasticSearch:

  • 支持分布式,可水平扩展
  • 降低全文检索的学习难度(即提供了Rest API风格的接口),它也可以被任何编程语言调用

ElasticSearch的分布式架构


ElasticSearch的分布式架构.png

从这张图我们可以看出来:我们可以很方便的在自己的PC上安装ES环境,但数据变大的时候我们可以迅速扩展到数百个节点。

简单归纳:

  • 集群规模可以从单个节点扩展至数百个节点
  • 高可用 & 水平扩展:从服务和数据两个维度
  • 支持不同的节点类型:支持Hot & Warm架构

支持多种方式集成接入

ElasticSearch提供的主要功能

  • 海量数据的分布式存储及集群管理能力:服务于数据的高可用,水平扩展
  • 近实时搜索,性能卓越:结构化 / 全文 / 地理位置 / 自动完成
  • 海量数据的近实时分析: 指聚合功能

结合一个真实事例看下其使用的场景:

图片.png

这是一个个人比较喜欢的一个酒店订阅的平台,使用ES可以实现酒店的搜索,通过聚合(左侧)可以根据价格区间可以高效的筛选满足要求的结果列表。

Elastic的版本升级及重要版本的新特性

  • 0.4:2010年2月第一次发布
  • 1.0:2014年1月
  • 2.0:2015年10月
  • 5.0:2016年10月
  • 6.0:2017年10月
  • 7.0:2019年4月

新特性5.X

  • Lucene 6.x(表示此时以来的Lucene版本)性能升级,默认打分机制从TF-IDF(计算分词相似的一个算法)改为BM 25
  • 支持Ingest节点/Painiess Scripting / Completion suggested支持 / 原生的Java REST客户端
  • Type标记成deprecated(过时,以前我们在创建索引的时候是需要创建一个Type标记的,现在可以不创建它),支持了keyword类型
  • 性能优化:
    (1)内部引擎移除了避免同一文档并发更新的竞争锁,带来15% - 20%的性能提升
    (2)支持分片上聚合的缓存
    (3)新增了Prefile API

新特性6.X

  • Lucene 7.x
  • 新功能
    (1)跨级群复制(CCR)
    (2)索引声明周期管理
    (3)SQL的支持
  • 更友好的升级及数据迁移
    (1)在主要版本之间的迁移更为简化,体检升级
    (2)全新的基于操作的数据复制框架,可加快恢复数据、
  • 性能优化
    (1)有效存储稀疏字段的新方法,降低了存储成本
    (2)在索引时进行排序,可加快排序的查询性能

新特性 7.X

  • Lucene 8.0
  • 重大改进 - 正式废除单个索引下多Type的支持
  • 7.1开始,Security功能免费使用
  • ECK - Elasticsearch Operator on Kubernetes
  • 新功能
    (1)New Cluster coordination
    (2)Feature-Complete High Level REST Client
    (3)Script Score Query、
  • 性能优化
    (1)默认的Permary Shard数从5改为1,避免Over Sharding
    (2)性能优化,更快的Top K

总结


ES是一个开源的搜素和分析引擎,有很好的的性能,天生支持水平个扩展;另外ES接口也支持多种客户端接入语言;有非常好的社区的支撑;目前以前有超过3.5亿次的下载量,原因是ES背后有一个很强的公司支撑。

欢迎关注更多个人博客:RelaxHeart网 - Tec博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容