1. 程式人生 > >ElasticSearch 入門簡介

ElasticSearch 入門簡介

> **公號:碼農充電站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)