elasticsearch學習系列一(ES背景及簡介)

ES簡介

1. ES是什么?

Elasticsearch 是一個開源的搜索引擎,建立在全文搜索引擎庫 Apache Lucene 基礎之上

用 Java 編寫的,它的內部使用 Lucene 做索引與搜索,但是它的目的是使全文檢索變得簡單, 通過隱藏 Lucene 的復雜性,取而代之的提供一套簡單一致的 RESTful API

Elasticsearch 不僅僅只是一個全文搜索引擎。 它可以被下面這樣準確的形容:

一個分布式的實時文檔存儲,每個字段可以被索引與搜索— —`作數據庫用`

一個分布式實時分析搜索引擎 

能勝任上百個服務節點的擴展,并支持 PB 級別的結構化或者非結構化數據

2. ES的誕生

原文鏈接:https://www.elastic.co/guide/cn/elasticsearch/guide/current/intro.html

image

3. ES的發展歷程

Elasticsearch 后來作為一家公司(Elastic公司)進行運作,定位為數據搜索和分析平臺。在2014年6月獲得7000萬美元融資,累積融資過億美元。

ES現在可以與Java、Ruby、Python、PHP、Perl、.NET等多種客戶端集成。也可與Hadoop、Spark等大數據分析平臺進行集成,功能十分強大。

基于Elasticsearch衍生出了一系列開源軟件,統稱為 Elatic Stack

image

說明:

因為logstash比較耗內存,所以用Beats來替代

為避免版本混亂,從5.0開始,Elastic公司將各組件的版本號統一。使用時,各組件版本號應一致(版本號形式:x.y.z,z可以不同)。

4. ES的特性

官網的介紹: https://www.elastic.co/cn/products/elasticsearch

速度快、易擴展、彈性、靈活、操作簡單、多語言客戶端、X-Pack、hadoop/spark強強聯手、開箱即用。

分布式:橫向擴展非常靈活
全文檢索:基于lucene的強大的全文檢索能力;
近實時搜索和分析:數據進入ES,可達到近實時搜索,還可進行聚合分析
高可用:容錯機制,自動發現新的或失敗的節點,重組和重新平衡數據
模式自由:ES的動態mapping機制可以自動檢測數據的結構和類型,創建索引并使數據可搜索。
RESTful API:JSON + HTTP

5. ES的應用場景

image

6. ES的架構

image

說明:

Gateway是ES用來存儲索引的文件系統,支持多種類型。
Gateway的上層是一個分布式的lucene框架。
Lucene之上是ES的模塊,包括:索引模塊、搜索模塊、映射解析模塊等
ES模塊之上是 Discovery、Scripting和第三方插件。Discovery是ES的節點發現模塊,不同機器上的ES節點要組成集群需要進行消息通信,集群內部需要選舉master節點,這些工作都是由Discovery模塊完成。支持多種發現機制,如 Zen 、EC2、gce、Azure。Scripting用來支持在查詢語句中插入javascript、python等腳本語言,scripting模塊負責解析這些腳本,使用腳本語句性能稍低。ES也支持多種第三方插件。
再上層是ES的傳輸模塊和JMX.傳輸模塊支持多種傳輸協議,如 Thrift、memecached、http,默認使用http。JMX是java的管理框架,用來管理ES應用。
最上層是ES提供給用戶的接口,可以通過RESTful接口和ES集群進行交互。

7. ES的核心概念

Near Realtime(NRT) 近實時。數據提交索引后,立馬就可以搜索到。
Cluster 集群,一個集群由一個唯一的名字標識,默認為“elasticsearch”。集群名稱非常重要,具有相同集群名的節點才會組成一個集群。集群名稱可以在配置文件中指定。
Node 節點:存儲集群的數據,參與集群的索引和搜索功能。像集群有名字,節點也有自己的名稱,默認在啟動時會以一個隨機的UUID的前七個字符作為節點的名字,你可以為其指定任意的名字。通過集群名在網絡中發現同伴組成集群。一個節點也可是集群。
Index 索引: 一個索引是一個文檔的集合(等同于solr中的集合)。每個索引有唯一的名字,通過這個名字來操作它。一個集群中可以有任意多個索引。
Type 類型:指在一個索引中,可以索引不同類型的文檔,如用戶數據、博客數據。從6.0.0 版本起已廢棄,一個索引中只存放一類數據。
Document 文檔:被索引的一條數據,索引的基本信息單元,以JSON格式來表示。
Shard 分片:在創建一個索引時可以指定分成多少個分片來存儲。每個分片本身也是一個功能完善且獨立的“索引”,可以被放置在集群的任意節點上。分片的好處:
允許我們水平切分/擴展容量
可在多個分片上進行分布式的、并行的操作,提高系統的性能和吞吐量。

注意:分片數創建索引時指定,創建后不可改了。備份數可以隨時改。
Replication 備份: 一個分片可以有多個備份(副本)。備份的好處:
高可用。一個主分片掛了,副本分片就頂上去
擴展搜索的并發能力、吞吐量。搜索可以在所有的副本上并行運行。-高并發下副本也可搜索

8. 為了方便理解,作一個ES和數據庫的對比

image

9. ES學習資源

官網的文檔是最好的學習資源,詳細、全面,官網還提供有一些視頻:
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

官網中還提供一個中文的權威指南,可以學習,(版本稍老了點是基于2.0的):
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容