Elasticsearch到底是什麼玩意
Elasticsearch(ES)是一款基於Lucene的分佈式、可擴展、高可用、實時的搜索與數據分析引擎。Lucene是使用Java實現的一套全文檢索類庫,ES基於Lucene做了分佈式相關的工作。
Elasticsearch有哪些應用
- 全文檢索
- 結構化查詢
- 近實時數據
- 海量數據進行近實時的處理
- 分析統計
Elasticsearch相關概念
- 集羣(cluster):一個集羣就是由一個或多個節點組織在一起,它們共同持有你整個的數據,並一起提供索引和搜索功能。
- 節點(node):一個節點就是集羣中的一個服務器,作爲集羣的一部分,參與集羣的索引和搜索功能。
- 索引(index): 一個索引就是一個具有相似特徵的文檔集合,相當於一個數據集。
- 類型(type):在一個索引中,你可以定義一種或多種類型,相當於對一個索引中數據的邏輯劃分(ES官方文檔明確說明不推薦使用type,即建議一個索引只有一個type。ES7.0已經廢棄了type)。
- 文檔(document): 一個文檔是一個可被索引的基礎信息單元,就是索引裏面的一條數據,使用JSON格式來表示。
- 域(field): 文檔中的一個數據字段。一個文檔由多個域組成。
- 分片(shards):分片是索引的一部分,一個索引由多個分片組成。每個分片可以分佈在不同的節點上,ES會根據文檔id(也可以指定其他字段)做hash,使用得到的hash值將文檔路由到指定分片上。分片是ES做Data Rebalance的最小單元。
- 副本(replicas):創建索引時可以爲索引指定0個或者多個副本。副本是分片級別的,即索引的分片由1個主分片(primary shard)和0個或者多個副本分片(replica shard)組成。primary shard可以接受讀取和寫入請求,replica shard只能接受讀取請求。所以副本只能提高數據的可用性和併發讀取能力。當primary shard所在服務器的節點掛掉以後,ES會通過leader選舉機制將replica shard爲primary shard。
Elasticsearch與傳統數據庫對應關係
Elasticsearch生態
- Kibana:ES的數據查詢、分析和監控的可視化平臺。ES6.3以後,Kibana開源免費。
- Logstash:開源的服務器端數據處理管道,能夠同時從多個來源採集數據,轉換數據,然後將數據發送到您最喜歡的 “存儲庫” 中。
- Security:ES的權限管理工具。從 6.8 和 7.1 版本開始,核心安全功能(例如 TLS、文件和原生 Realm 身份驗證,以及基於角色的訪問控制)免費提供。
- Curator:ES的索引和快照管理工具。