最近因工作原因,和ES(Elasticsearch)接触的比较多;ES之前了解过,不怎么熟悉,故打算系统学习之。
按照自己的学习惯例,一是了解主要概念,二是动手安装一遍。
故,本文大纲为:
1. 概念理解:
1) ES是什么?
2) ES发展史
3) ES市场成熟度
2. 安装部署
1) Linux下如何安装
2) Docker方式如何安装
Contents:
一、ES概念理解:
1. ES是什么(Elasticsearch)?
Elasticsearch 是由 Elastic 公司创建。它的代码位于 GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine。
目前,Elasticsearch 是一个免费及开放(free and open)的项目。
Elastic 公司也拥有 Logstash 及 Kibana 开源项目,三个项目形成了 ELK 软件栈,形成了一个强大的生态圈。其中:
1. Logstash 负责数据的采集,处理(丰富数据,数据转换等);
2. Kibana 负责数据展示,分析,管理,监督及应用;
3. Elasticsearch 处于最核心的位置,它可以帮对数据进行快速地搜索及分析。
Elasticsearch是一个基于Lucene的一个开源的高扩展的分布式全文检索引擎,基于RESTful web接口,隐藏了Luncee的复杂性,从而让全文搜索变得简单;可近乎实时的存储、检索数据,可扩展性强,可处理PB级别的数据。
理解ES的关键在于理解lucene的基本原理:
Lucene是一种高性能、可伸缩的信息搜索(IR)库,在2000年开源,最初由鼎鼎大名的Doug Cutting开发,是基于Java实现的高性能的开源项目。Lucene采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。
关于lucene的原理,可参见如下链接,这里不再赘述:
https://www.jianshu.com/p/28fb017be7a7
官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。
Elasticsearch以上大致了解了ES是什么?
接下来再说一下ES的发展史,了解其发展史,可帮助我们知道所以然和不然。
4. ES发展史
Elasticsearch是一个基于 Apache Lucene (TM)的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
在 1999 年,Doug Cutting 创建了一个叫做 Lucene 的开源项目:
1. 一个完全用 Java 编写的搜索引擎库
2. 截止2005年,是一个顶级的 Apache 开源项目
3. 提供强大的全文搜索功能
但Lucene 只是一个库,本身并不提供高可用性及分布式部署。想要发挥其强大的作用,需使用 Java 并要将其集成到应用中。而且Lucene 非常复杂,需要深入的了解检索相关知识来理解它是如何工作的,上手比较困难。
大家这里可以类比内存溢出和释放来理解。
在 2004 年, Shay Banon也就是现在