終於有人把elasticsearch原理講通了

轉自mysql

 

小史是一個非科班的程序員,雖然學的是電子專業,可是經過本身的努力成功經過了面試,如今要開始迎接新生活了。程序員

 

 

隨着央視詩詞大會的熱播,小史開始對詩詞感興趣,最喜歡的就是飛花令的環節。面試

可是因爲小史好久沒有背過詩詞了,飛一個字很難說出一句,不少以前很熟悉的詩句也想不起來。sql

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【倒排索引】數據庫

 

 

 

 

 

 

 

 

 

 

 

 

呂老師:可是我讓你說出帶「前」字的詩句,因爲沒有索引,你只能遍歷腦海中全部詩詞,當你的腦海中詩詞量大的時候,就很難在短期內獲得結果了。json

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【索引量爆炸】api

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【搜索引擎原理】數據結構

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

【elasticsearch簡介】架構

 

 

 

 

 

 

 

 

 

 

呂老師:可是lucene仍是一個庫,必需要懂一點搜索引擎原理的人才能用的好,因此後來又有人基於lucene進行封裝,寫出了elasticsearch。app

 

 

 

 

 

 

 

 

 

 

 

 

【elasticsearch基本概念】

 

 

 

 

 

 

 

 

 

 

呂老師:類型是用來定義數據結構的,你能夠認爲是mysql中的一張表。文檔就是最終的數據了,你能夠認爲一個文檔就是一條記錄。

 

 

 

 

 

 

呂老師:好比一首詩,有詩題、做者、朝代、字數、詩內容等字段,那麼首先,咱們能夠創建一個名叫poems的索引,而後建立一個名叫poem的類型,類型是經過mapping來定義每一個字段的類型,好比詩題、做者、朝代都是keyword類型,詩內容是text類型,而字數是integer類型,最後就是把數據組織成json格式存放進去了。

 

 

 

 

 

 

呂老師:這個問題問得好,這涉及到分詞的問題,keyword類型是不會分詞的,直接根據字符串內容創建反向索引,text類型在存入elasticsearch的時候,會先分詞,而後根據分詞後的內容創建反向索引。

 

 

 

 

 

 

呂老師:以前咱們說過,elasticsearch把操做都封裝成了http的api,咱們只要給elasticsearch發送http請求就行。好比使用curl -XPUT 'http://ip:port/poems',就能創建一個名爲poems的索引,其餘操做也是相似的。

 

 

【elasticsearch分佈式原理】

 

 

 

 

呂老師:沒錯,elasticsearch也是會對數據進行切分,同時每個分片會保存多個副本,其緣由和hdfs是同樣的,都是爲了保證分佈式環境下的高可用。

 

 

 

 

 

 

呂老師:沒錯,在elasticsearch中,節點是對等的,節點間會經過本身的一些規則選取集羣的master,master會負責集羣狀態信息的改變,並同步給其餘節點。

 

 

 

 

 

 

 

 

 

 

呂老師:注意,只有創建索引和類型須要通過master,數據的寫入有一個簡單的routing規則,能夠route到集羣中的任意節點,因此數據寫入壓力是分散在整個集羣的。

 

 

【elk系統】

 

 

 

 

呂老師:其實不少公司都用elasticsearch搭建elk系統,也就是日誌分析系統。其中e就是elasticsearch,l是logstash,是一個日誌收集系統,k是kibana,是一個數據可視化平臺。

 

 

 

 

 

 

呂老師:分析日誌的用處可大了,你想,假如一個分佈式系統有1000臺機器,系統出現故障時,我要看下日誌,還得一臺一臺登陸上去查看,是否是很是麻煩?

 

 

 

 

呂老師:可是若是日誌接入了elk系統就不同。好比系統運行過程當中,忽然出現了異常,在日誌中就能及時反饋,日誌進入elk系統中,咱們直接在kibana就能看到日誌狀況。若是再接入一些實時計算模塊,還能作實時報警功能。

 

 

 

 

 

 

【筆記】

小史學完了elasticsearch,在筆記本上寫下了以下記錄:

一、反向索引又叫倒排索引,是根據文章內容中的關鍵字創建索引

二、搜索引擎原理就是創建反向索引

三、elasticsearch在lucene的基礎上進行封裝,實現了分佈式搜索引擎

四、elasticsearch中的索引、類型和文檔的概念比較重要,相似於mysql中的數據庫、表和行

五、elasticsearch也是master-slave架構,也實現了數據的分片和備份

六、elasticsearch一個典型應用就是elk日誌分析系統

寫完,又高高興興背詩去了。

觀書有感

朱熹

半畝方塘一鑑開,天光雲影共徘徊。

問渠那得清如許?爲有源頭活水來。

猜你喜歡

歡迎關注本公衆號:iteblog_hadoop:

回覆 spark_summit_201806 下載 Spark Summit North America 201806 所有PPT

回覆 spark_summit_eu_2018 下載 Spark+AI Summit europe 2018 所有PPT

回覆 HBase_book 下載 2018HBase技術總結 專刊

回覆 all 獲取本公衆號全部資料

0、回覆 電子書 獲取 本站全部可下載的電子書

一、Elasticsearch如何作到億級數據查詢毫秒級返回?

二、京東HBase平臺進化與演進

三、深刻理解 Spark Delta Lake 的誕生及其工做原理

四、Apache Kafka 2.3 發佈,新特性講解

五、Hadoop 氣數已盡?

六、一條 SQL 在 Apache Spark 之旅(下)

七、Kafka 是如何保證數據可靠性和一致性

八、Kylin 在小米大數據中的應用

九、Uber 大數據平臺的演進(2014~2019)

十、圖文了解 Kafka 的副本複製機制

十一、更多大數據文章歡迎訪問https://www.iteblog.com及本公衆號(iteblog_hadoop)十二、Flink中文文檔:http://flink.iteblog.com1三、Carbondata 中文文檔:http://carbondata.iteblog.com

相關文章
相關標籤/搜索