1、Elasticsearch是什么
elasticsearch是一款开源的分布式搜索、存储、分析引擎;它目前的时效为近实时性的。Solar也是顶级的开源搜索引擎,也是基于lucene;elasticsearch与Solar相比安装更加简单,对于一些复杂的搜索支持更好,在大数据量下,elasticsearch的性能更好,现在被很多公司大量的使用。
我们可以看到数据库搜索引擎排名已经很高了
DB-Engines Ranking - popularity ranking of database management systems
2、Elasticsearch发展
2.1 Elasticsarch发展史
2004年,shay banon基于lucene开发了compass。
2010年,shay banon重构了compass,取名为elasticsearch,使其支持分布式和水平扩展。
2012年,Elasticsearch BV公司被创建,围绕Elasticsearch及相关软件提供商业服务和产品。
2015年,Elasticsearch公司更名为Elastic.
Lucene 是一个高性能的搜索引擎库,它提供索引数据和搜索数据的功能,内部非常复杂,elasticsearch利用了lucene的高性能,封装了它的复杂性,对外可以提供rest接口,不同语言的应用都可以调用。
轶事:
2004年,shay banon失业了,准备给他厨师老婆做一个食谱的搜索引擎,如果直接使用Lucene很难,所以他把使用lucene抽象了一下,并开源了,开发者可以直接在程序里使用compass来进行搜索,2010年的时候,它已经重构了compass,取名为elasticsearch,支持分布式和水平扩展。
2.2 Elasticsarch重要版本
Elastic的版本维护政策维护当前主要版本的最新次要版本,以及上一个主要版本的最新次要版本,例如7.10.2,7主版本,10为次要版本,2为修复bug的版本。它的具体的版本政策可以查看(https://www.elastic.co/cn/support/eol),elasticsearch主要版本特性如下:
在实际生产中推荐采用7.x,官方做了很多优化,性能更好,功能更强大。
3、Elasticsearch应用场景
Elastic公司围绕着elasticsearch构建一整套生态系统,适用了很多热门的使用场景
3.1 Elastic生态圈
2013年logstash被收购,同年kibana加入elastic公司,后续它陆续收购了beat、prealert(机器学习)等公司,将其纳入到elastic生态圈。
beats,轻量数据采集器,可收集文件、网络包等数据,它们安装在目标服务器作为代理,转发数据到logstash或elasticsearch上。
X-Pack,商业套件,提供了一些增值服务,有些组件也开源了。
3.2 使用场景
-
网站搜索
设计了丰富的api来提供搜索服务,github、stackoverflow等网站的搜索都是基于elasticsearch。
-
日志
将分散的日志,集中化存储到elasticsearch上。
日志管理一般分为:日志收集,格式化,检索,风险告警。
-
数据库同步
通过某种同步机制将数据库某个表的数据同步到elasticsearch上,然后提供搜索服务。
-
指标分析
提供了分组查询、top查询、排序、相关度打分,可以进行数据分析
4、Elasticsearch整体架构
4.1 整体架构图
如上图所示,elasticsearch整体的功能划分:
-
restful api,表示提供rest风格的api来实现编程何管理
-
Transport, 网络传输模块,支持http,thrift等主流协议,默认tcp
-
Scripting,脚本语言,支持使用groovy、painless等脚本语言
-
3rd plugin,支持第三方插件
-
Index module 索引文档、search module,搜索文档
-
River,支持接入其它数据源
-
Jmx,监控
-
Discovery,服务发现模块<