【ElasticSearch】(一)初識ES
接觸ElasticSearch一段時間了,前期調研、專案接入、資料同步、列表查詢這些階段都已經經歷了,但是ES在腦海中的整體映像還是模模糊糊,做個梳理,認真地思考一下ElasticSearch中模糊的思維。
前提:
如圖,是從github上學習到了,巨集觀總結階段的流程化思考,很科學的學習習慣,我按照這個思路來總結下目前階段我理解到的ElasticSearch.
它是什麼
1.術語定義
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。
官網:https://www.elastic.co/products/elasticsearch
百度百科:https://baike.baidu.com/item/elasticsearch/3411206?fr=aladdin
2.它的歷史
出現原因:
歷史版本:https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-upgrade.html(每個版本節點,做了哪些事情,有助於排解使用中的問題)
3.構架
如圖所示,是ES的整體架構,從下往上說:
1.Gateway是es用於儲存索引的檔案系統,支援多種檔案型別,如圖所示。
2.Gateway往上就是分散式的Lucene框架,ES底層的API是由這一層提供的,每個節點都有一個Lucene引擎的支援。
3.Lucene往上是Elasticsearch的模組,包括索引模組、搜尋模組、對映解析模組等。River相當於第三方外掛,用來匯入第三方資料來源,在2.x之後不再使用。
4.ES模組之上是Discovery、Scripting和第三方外掛。Discovery是ES的節點發現模組,不同機器上的ES節點要組成叢集需要訊息通訊,叢集內部選主master都是通過Discovery來做。Scripting用來支援JavaScript、Python等多語言,可以在查詢語句中嵌入。
5.再往上是傳輸模組和JMX。傳輸模組支援Thrift、Memcached、HTTP,預設HTTP傳輸。JMX是java的管理框架。
6.再往上是ES提供給使用者的介面,通過RESTful API和ES叢集進行互動。
4.核心概念
1.叢集
代表一個叢集,叢集中有多個節點,其中有一個為主節點,這個主節點是可以通過選舉產生的,主從節點是對於叢集內部來說的。es的一個概念就是去中心化,字面上理解就是無中心節點,這是對於叢集外部來說的,因為從外部來看es叢集,在邏輯上是個整體,你與任何一個節點的通訊和與整個es叢集通訊是等價的。
2.節點
一個節點是叢集中的一個伺服器,對於節點,最好採用被動加入的方式,不然容易產生“腦裂”現象。
3.索引4.型別 5.文件
這三個概念,參考與關係型DB的對比:
6.分片
es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分佈到不同的節點上。構成分散式搜尋。分片的數量只能在索引建立前指定,並且索引建立後不能更改。
7.副本
es可以設定多個索引的副本,副本的作用一是提高系統的容錯性,當某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜尋請求進行負載均衡。
4.應用場景
1.站內搜尋
用在網頁資訊量很大的網站,百度、github、stackoverflow,全文檢索的功能,方便使用者快速檢索資料資訊。
2.NoSQL資料庫
Elasticsearch讀寫效能優於MongoDB,支援地理位置查詢。
3.日誌分析
日誌分析由實時日誌分析平臺ELK(Elasticsearch、Logstash、Kiabana)完成,能夠對日誌進行集中的收集、儲存、搜尋、分析、監控以及視覺化。
5.同類常見技術
Solr(全文搜尋)對比es:
Splunk(全文搜尋、大資料搜尋) 對比es:https://blog.csdn.net/github_39335046/article/details/73835390
從趨勢上可見,近幾年ES的排名也是越來靠前。
學習前提、依賴
RESTful API的使用
JSON資料結構的瞭解。
為什麼會出現
1.分散式
2.全文檢索
3.近實時搜尋和分析
4.高可用
5.模式自有
6.RESTful API
從這幾個角度看,這似乎是es的優點,隨著現在網際網路專案的資料量越來越大,這恰恰是為什麼es能越來越火的原因啊。
缺陷
換了好幾個負面的關鍵詞去搜索,拋開技術實現,從選型的角度,相比較solr,沒有什麼缺陷。像“深度分頁”這種的,完全可以在使用的時候避免,官網給了很好的解決方案:Scroll以及from/size等方法。
歸納整理並分享
1.官網的Getting Started絕對是最快、最好的學習方式;
2.安裝時候,通過HEAD外掛,或者googl瀏覽器的sense外掛,自己敲一敲,多動手;
elasticsearch輔助:
1.head外掛
2.Kiabana
腦圖總結
1.概述;2.應用;3.原理;4.QA