終於有人把Elasticsearch原理講透了(二)

Elasticsearch 簡介


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


呂老師:但是 Lucene 還是一個庫,必須要懂一點搜索引擎原理的人才能用的好,所以後來又有人基於 Lucene 進行封裝,寫出了 Elasticsearch。


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


Elasticsearch 基本概念


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


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


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


呂老師:比如一首詩,有詩題、作者、朝代、字數、詩內容等字段,那麼首先,我們可以建立一個名叫 Poems 的索引,然後創建一個名叫 Poem 的類型,類型是通過 Mapping 來定義每個字段的類型。

比如詩題、作者、朝代都是 Keyword 類型,詩內容是 Text 類型,而字數是 Integer 類型,***就是把數據組織成 Json 格式存放進去了。


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


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


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


呂老師:之前我們說過,Elasticsearch 把操作都封裝成了 HTTP 的 API,我們只要給 Elasticsearch 發送 HTTP 請求就行。

比如使用 curl -XPUT 'http://ip:port/poems',就能建立一個名為 Poems 的索引,其他操作也是類似的。


終於有人把Elasticsearch原理講透了(二)


Elasticsearch 分佈式原理


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


呂老師:沒錯,Elasticsearch 也是會對數據進行切分,同時每一個分片會保存多個副本,其原因和 HDFS 是一樣的,都是為了保證分佈式環境下的高可用。


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


呂老師:沒錯,在 Elasticsearch 中,節點是對等的,節點間會通過自己的一些規則選取集群的 Master,Master 會負責集群狀態信息的改變,並同步給其他節點。


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


呂老師:注意,只有建立索引和類型需要經過 Master,數據的寫入有一個簡單的 Routing 規則,可以 Route 到集群中的任意節點,所以數據寫入壓力是分散在整個集群的。


終於有人把Elasticsearch原理講透了(二)


ELK 系統


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


呂老師:其實很多公司都用 Elasticsearch 搭建 ELK 系統,也就是日誌分析系統。其中 E 就是 Elasticsearch,L 是 Logstash,是一個日誌收集系統,K 是 Kibana,是一個數據可視化平臺。


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


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


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


呂老師:但是如果日誌接入了 ELK 系統就不一樣。比如系統運行過程中,突然出現了異常,在日誌中就能及時反饋,日誌進入 ELK 系統中,我們直接在 Kibana 就能看到日誌情況。如果再接入一些實時計算模塊,還能做實時報警功能。


終於有人把Elasticsearch原理講透了(二)


終於有人把Elasticsearch原理講透了(二)


總結

小史學完了 Elasticsearch,在筆記本上寫下了如下記錄:

  • 反向索引又叫倒排索引,是根據文章內容中的關鍵字建立索引。
  • 搜索引擎原理就是建立反向索引。
  • Elasticsearch 在 Lucene 的基礎上進行封裝,實現了分佈式搜索引擎。
  • Elasticsearch 中的索引、類型和文檔的概念比較重要,類似於 MySQL 中的數據庫、表和行。
  • Elasticsearch 也是 Master-slave 架構,也實現了數據的分片和備份。
  • Elasticsearch 一個典型應用就是 ELK 日誌分析系統。

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


分享到:


相關文章: