ElasticScarch的學(xué)習總結(jié)
ElasticScarch簡介:
從字義上理解就是彈性搜索的意思,其實他就是一個搜索引擎,基于Lucene開發(fā)的分布式搜索引擎,和基于RESTful Web接口,搜索接近實時、快速、穩(wěn)定。目前這款搜索引擎非常的健壯和流行。本文章總結(jié)的都是一些學(xué)習過的知識。另外有操作的文檔,建議最好是先自己動手搭建好之后再看本文章。(每個人學(xué)習的方式都不一樣,個人不太喜歡太理論的東西,我喜歡先動手操作一遍再理論 這樣的學(xué)習方式對我來說比較高效率。)
特點介紹:
- 分布式: 任何的單點出現(xiàn)故障,都不會影響集群的整體運作。
- 支持RESTful接口:對外提供RESTful接口服務(wù),降低服務(wù)的局限性、可跨平臺。
- 實時索引: 實時索引其實是近實時,它最快的速度可以到達寫入數(shù)據(jù)后1秒后立馬可見。
ElasticScarch名詞的解釋:
每門技術(shù)都有自己的專業(yè)名詞,下面總結(jié)一下該技術(shù)的名詞解釋,在用ElasticScarch的過程中可能會經(jīng)常聽到一些專業(yè)名詞,下面為大家解釋并且理解這些詞匯的概念。
名詞解釋:
- Cluster(集群): ElasticScarch是一個分布式的搜索引擎,它由多臺機器的Node(節(jié)點)組成在一起,每臺機器都有ClusterName,當他們發(fā)現(xiàn)自己的ClusterName相同時,就會組織成一個Cluster(集群),他們會共同分享數(shù)據(jù)、又具有負載均衡的特性。
- Node(節(jié)點):相當于一個單節(jié)點的ElasticScarch,單機的一個服務(wù),在Cluster(集群) 中的其中一臺主機。
- Shards(分片):一個Index(索引)是由N個、多個Shards(分片)組成的,把Index(索引)的數(shù)據(jù)都分在不同的分片上,再把分片放在不同的物理機器上。由多臺機器承載這些大量的數(shù)據(jù)。
- Replicas(副本):他會從Shards(分片)中復(fù)制多份的分片,當裝有Shards(分片)的機器宕機后,會自動成為主分片,一個安全的備份。
索引名詞解釋:
- Index(索引): 一個Index(索引)有一個分片的概念,一個Index(索引)包含了N個分片,因為ElasticScarch是基于Lucene封的,一個分片又可以理解成是一個Lucene的索引。(先把它理解成一個大的關(guān)系型數(shù)據(jù)庫)
- Type(類型):在一個Index(索引)中你可以有一種或者多種數(shù)據(jù)類型。(理解成在一個關(guān)系型數(shù)據(jù)庫中有一張或者多張表)
- Document(文檔):一個文檔是一個可被Index(索引)的基礎(chǔ)信息單元。(理解成數(shù)據(jù)庫表里面的一條數(shù)據(jù))
- Field(列):Field(列)是ElasticScarch中最小的單位(一條數(shù)據(jù)某一列、一個字段)
ElasticScarch的架構(gòu)體系:
ElasticScarch的架構(gòu)圖:
我們從最底層往上講
Gateway層:
最底這一層最主要是是做數(shù)據(jù)持久化的,其實就是數(shù)據(jù)層,可以看到可以支持各種的存儲系統(tǒng),本地的存儲系統(tǒng)、HadoopHDFS等等各種各樣的數(shù)據(jù)存儲系統(tǒng),用于存元數(shù)據(jù)。
Lucene層
ElasticScarch的底層就是對Lucene的一個封裝,它由始至終都要用到Lucene,ElasticScarch在Lucene的基礎(chǔ)之上做了一個分布式的框架,把多個Lucene的索引給管理起來,最后做一個非常大規(guī)模的搜索引擎。
倒數(shù)第三層 index、search、mapping:
- index模塊: 怎么創(chuàng)建某個索引,數(shù)據(jù)如何創(chuàng)建,如何存儲 都由它來管理。
- search模塊: 數(shù)據(jù)的查詢由它來完成。
- mapping模塊: 相單于如何創(chuàng)建一個表的結(jié)構(gòu)、怎么創(chuàng)建這個mapping都由它管理
- River模塊: 這個模塊現(xiàn)在沒有了,我記得是數(shù)據(jù)同步還是什么鬼(反正不重要)
倒數(shù)第四層 Discovery、Scripting、3rdPlugins:
- Discovery模塊: 服務(wù)發(fā)現(xiàn)模塊、當有節(jié)點要加入進來需要通過此模塊,主要處理節(jié)點與節(jié)點之間的問題,目前實現(xiàn)有兩種方式,分別是ZEN、EC2,用的最多的是ZEN。
- Scripting模塊: 腳本模塊、可以自己寫一段腳本代碼 來進行元數(shù)據(jù)的二次處理 返回給前臺頁面。(性能低最好別用)
- 3rdPlugins:第三方插件,ElasticScarch支持很多的第三方插件。
Transport層:
Transport層主要用于數(shù)據(jù)的傳輸、想訪問ElasticScarch,第一步就是要和它進行連接,那么連接的步驟和數(shù)據(jù)的傳輸,就在這層。一般我們都用http進行交互。
Memcached層:這個架構(gòu)圖是比較早期的,現(xiàn)在沒有這一層了。以前這層好像是做緩存的(反正不重要)。
RESTful 層:這一層就很簡單了,就不說了。