ElasticSearch 入門簡介
阿新 • • 發佈:2021-02-03
> **公號:碼農充電站pro**
> **主頁:**
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210110152155468.png?)
[ElasticSearch](https://www.elastic.co/cn/elasticsearch/) 是一款**強大的、開源的、分散式**的**搜尋與分析引擎**,簡稱 **ES**,它提供了**實時搜尋**與**聚合分析**兩大功能。
使用 ES 可以構建可擴充套件的**搜尋應用**,從而幫助我們在海量資料中,快速找到想要的內容。
> **elastic** 的含義是靈活的,有彈性的。
### 1,ES 的誕生與發展
**ES** 是基於 **Lucene** 開發的一款搜尋應用。
[Lucene](https://lucene.apache.org/) 是一個基於 **Java** 語言的搜尋引擎庫,它由 **Doug Cutting** 創建於 1995 年,並於 2005 年成為 **Apache** 頂級開源專案。
![Doug Cutting](https://img-blog.csdnimg.cn/20210113115113985.png?)
(上圖為 `Doug Cutting` )
> **Doug Cutting** 就是大名鼎鼎的 **Hadoop** 之父。
雖然 Lucene 非常強大,但它只是一個 Java 類庫,而且學習成本較高。
ES 的創始人 **Shay Banon** 在 2004 年,基於 Lucene 建立了一個開源專案 **Compass**,後於 2010 年改名為 ElasticSearch。
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210113115706180.png?)
(上圖為 `Shay Banon` )
從一開始 ES 就具備了可擴充套件,分散式,易用的特點,ES 的這些優點使得它很快的流行開來。
Shay Banon 在 2010 年釋出了 ES 的第一個版本,並於 2012 年成立了公司,來提供更加完善的產品和服務。
2015年,公司名稱從 Elasticsearch 改為 [Elastic](https://www.elastic.co/cn)。因為此時,公司的殺手級產品已經不僅僅是 Elasticsearch 了,而且還包括了 [Logstash](https://www.elastic.co/cn/logstash) 和 [Kibana](https://www.elastic.co/cn/kibana),這三款應用統稱為 **ELK**。
2018年,Elastic 在**紐交所**成功上市,如今的市值早已過百億美元。
***ES 的重要版本釋出時間表***
| 釋出時間 | 版本 |
|--|--|
| 2010 年 2 月 | 第一個版本 0.4 釋出 |
| 2014 年 1 月 | 1.0 版 |
| 2015 年 10 月| 2.0 版 |
| 2016 年 10 月 | 5.0 版 |
| 2017 年 10 月 | 6.0 版 |
| 2019 年 4 月 | 7.0 版 |
關於 Elastic 產品的生命週期可參考[這裡](https://www.elastic.co/cn/support/eol)。
### 2,ES 產品家族
Elastic 公司圍繞 ElasticSearch,有著豐富的產品家族,叫作 [ELK Stack](https://www.elastic.co/cn/what-is/elk-stack),其中包含了 4 個產品:
- [Kibana](https://www.elastic.co/cn/kibana):用於資料視覺化。
- 由 **Rashid Khan** 建立,2013 年被 Elastic 收購。
- [ElasticSearch](https://www.elastic.co/cn/elasticsearch/):ELK Stack 的核心元件,具有資料搜尋與聚合能力。
- [Beats](https://www.elastic.co/cn/beats/):輕量型資料採集器,基於 **Golang** 開發。
- [Logstash](https://www.elastic.co/cn/logstash):用於資料採集,支援從不同的資料來源採集資料及轉換資料。
- 由 **Jordan Sisel** 創建於 2009 年,2013 年被 Elastic 收購。
這四款產品的層級關係如下:
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210110200111863.png?)
### 3,ES 使用架構
將 ES 應用到專案中時,可以有兩種架構,一種是使用 ES 作為唯一的後端;另一種是 ES 與資料庫系統配合,一同作為後端。
***ES 作為唯一後端***
ES 作為一個**現代化的搜尋引擎**,它本身除了擁有**檢索功能**外,還擁有**儲存功能**。因此,在一個不復雜的專案中,可以將 ES 作為唯一的後端來使用。
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210110203540462.png?)
***ES 與資料庫系統配合***
在比較複雜的專案中,ES 無法提供傳統資料庫的所有功能(比如**事務處理**),因此需要將 ES 和傳統資料庫來配合使用。
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210110204254115.png?)
### 4,ES 的競爭對手
ES 主要有 **Solr** 和 **Splunk** 兩個競爭對手。
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210110210947999.png)
[Solr](https://lucene.apache.org/solr/) 也是基於 Lucene 的一款搜尋引擎,Lucene 與 Solr 已於 2010 年合併成為 Apache 的頂級專案。
[Splunk](https://www.splunk.com/) 是一個專業的資料處理平臺。
目前在 [DB-Engines](https://db-engines.com/) 的搜尋引擎排名中,SE、Splunk、Solr 分別位於第一、二、三名。
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210110211637158.png?)
### 5,ES 的應用
***ES 客戶端介面***
ES 支援豐富的 [Clients 介面](https://www.elastic.co/guide/en/elasticsearch/client/index.html)可與其進行互動,使得開發者可以用多種程式語言,多種方式進行接入。
***ES 企業應用***
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210203100125589.png)
目前你所熟知的[很多應用](https://www.elastic.co/cn/customers/)都使用了 ES 來提供搜尋功能,比如 GitHub,Wikipedia 等。
***ES 雲服務商***
很多大的雲服務商都提供了 [ES 託管服務](https://www.elastic.co/cn/cloud/),比如谷歌,微軟,亞馬遜,阿里巴巴等。
### 6,ES 官方文件
[這裡](https://www.elastic.co/guide/index.html)是 Elastic 所有產品的學習文件。
![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210113175245515.png?)
### 7,總結
ES 是一款強大的搜尋引擎系統,我們可以基於它為使用者提供搜尋功能。
ES 提供了豐富的客戶端介面和 ELK Stack 產品家族供開發者使用,極大的降低了企業構建搜尋服務的難度。
ELK Stack 被廣泛應用於**搜尋、日誌管理、安全分析、指標分析、業務分析、效能監控**等領域。
下一節將介紹 ES 的安裝及簡單使用。
(本節完。)
---
*歡迎關注作者公眾號,獲取更多技術乾貨。*
![碼農充電站pro](https://img-blog.csdnimg.cn/20200505082843773.png?#pic_center)