Elasticsearch 是一款分布式,RESTful 风格的搜索和数据分析引擎,可以从海量的数据中高效的找到相关信息。如 wiki 用 ES 进行全文检索及其高亮,Github 用其检索代码,电商平台用其做一些商品推荐等,具有丰富的使用场景。
在本篇文章中,主要涉及以下内容:
ES 的核心功能及其应用场景的介绍
ES 逻辑架构(文档,索引)的介绍
ES 物理架构(集群,节点,shard 等)的介绍
ES 环境安装
ES 倒排索引
Elasticsearch 核心功能:
海量数据分布式存储及其集群管理
大数据实时搜索引擎
近实时分析
Elasticsearch 核心特性:
高性能,非 T +1
容易扩展
Lucene 是由 Java 开发的一款搜索引擎类库,具有高性能,易拓展的优点,但由于其接口只能为 Java ,并且不支持水平拓展的局限性。
2004 年 Shay Banon 基于 Lucene 开发了 Compass,2010 年 重写了 Compass,取名 Elasticsearch,使其支持分布式,可水平拓展,并提供 restful 接口,让任何编程语言进行使用。
ES 常常搭配一些产品提供一些解决方案,如常提到的 ELK 就是,ES,Logstash 和 Kibana 的统称,下图很好的描述了 ES 家族及其生态。

其中 Beat 相较于 Logstash 更加轻量和便携。
ES 搜索案例,ES 虽然可以单独可以存储引擎,但其无法满足一些事务性的需要,所以常和关系型数据库搭配,采用如下架构:

ES 日志和指标分析案例,一般就是指数据收集,入库,可视化的过程,常采用如下的架构:

