Elastic Stack生態圈
- Logstash:數據處理管道,負責數據採集和轉換,可以實時獲取IP,排斥敏感字段,拓展插件多,安全等特性
- Beat:輕量數據採集器
- Kibana:數據可視化工具
- Elasticsearch:數據存儲
- X-Pack:商業化套件,負責安全
概念和數據庫類比
運維維度,節點、分片
主要圍繞兩個概念:高可用和拓展性
高可用:簡稱 HA,是系統一種特徵或者指標,體現如下兩點:
- 服務可用性:允許部分節點停止服務,整體服務沒有影響
- 數據可用性:允許部分節點丟失,最終不會丟失數據
拓展性:將原來節點和增量數據重新從 10 個節點分佈到 100 個節點,應對數據的猛增;
節點:是一個ES實例,本質上就是一個java進程,一個機器上可以運行多個實例,但是生產環境建議一臺機器上只運行一個ES實例;
節點類型
- Master-eligible Node 和 Master Node:Master Node 負責同步集羣狀態信息
- Data Node 和 Coordinating Node:數據節點,用於保存數據
- Hot & Warm Node:不同硬件配置的 Data Node,用來實現冷熱數據節點架構,降低運維部署的成本
- Machine Learning Node:負責機器學習的節點
- Tribe Node:負責連接不同的集羣。支持跨集羣搜索 Cross Cluster Search
- master node:通過 node.master 配置,默認 true
- data node:通過 node.data 配置,默認 true
- ingest node:通過 node.ingest 配置,默認 true
- coordinating node:默認每個節點都是 coordinating 節點,設置其他類型全部爲 false。
- machine learning:通過 node.ml 配置,默認 true,需要通過 x-pack 開啓。
分片
主分片:用來解決數據水平擴展的問題
副本分片:用來備份數據,提高數據的高可用性。副本分片是主分片的拷貝
節點、索引、分片總結
- 一個節點,對應一個實例
- 一個節點,可以多個索引
- 一個索引,可以多個分片
- 一個分片,對應底層一個 lucene 分片
倒排索引
1、舉例
1)正排索引
2)倒排索引
2、倒排索引核心組成
-
詞條(Term):索引裏面最小的存儲和查詢單元,對於英文來說是一個單詞,對於中文來說一般指分詞後的一個詞。
-
詞典(Term Dictionary):或字典,是詞條 Term 的集合。搜索引擎的通常索引單位是單詞,單詞詞典是由文檔集合中出現過的所有單詞構成的字符串集合,單詞詞典內每條索引項記載單詞本身的一些信息以及指向“倒排列表”的指針。
-
倒排表(Post list):一個文檔通常由多個詞組成,倒排表記錄的是某個詞在哪些文檔裏出現過以及出現的位置。
每條記錄稱爲一個倒排項(Posting)。倒排表記錄的不單是文檔編號,還存儲了詞頻等信息。
-
倒排文件(Inverted File):所有單詞的倒排列表往往順序地存儲在磁盤的某個文件裏,這個文件被稱之爲倒排文件,倒排文件是存儲倒排索引的物理文件。
詞典和倒排表是 Lucene 中很重要的兩種數據結構,是實現快速檢索的重要基石。詞典和倒排文件是分兩部分存儲的,詞典在內存中而倒排文件存儲在磁盤上。
舉例:
-
Java is the best programming language.
-
PHP is the best programming language.
-
Javascript is the best programming language.