ElasticSearch系列02:ES基礎概念詳解

在這裏插入圖片描述

1、ES 簡介

1)定義

  1. ES是elaticsearch簡寫, Elasticsearch是一個開源的高擴展的分佈式全文檢索引擎,它可以近乎實時的存儲、檢索數據;本身擴展性很好,可以擴展到上百臺服務器,處理PB級別的數據。
  2. Elasticsearch也使用Java開發並使用Lucene作爲其核心來實現所有索引和搜索的功能,但是它的目的是通過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜索變得簡單。

2)特點和優勢

  1. 分佈式實時文件存儲,可將每一個字段存入索引,使其可以被檢索到。
  2. 近乎實時分析的分佈式搜索引擎。
  3. 分佈式:索引分拆成多個分片,每個分片可有零個或多個副本。集羣中的每個數據節點都可承載一個或多個分片,並且協調和處理各種操作;
  4. 負載再平衡和路由在大多數情況下自動完成。
  5. 可以擴展到上百臺服務器,處理PB級別的結構化或非結構化數據(官網是這麼說的)。也可以運行在單臺PC上(已測試)。
  6. 支持插件機制,分詞插件、同步插件、Hadoop插件、可視化插件等。

2、ES 基本概念

1)節點(Node)

運行了單個實例的ES主機稱爲節點,它是集羣的一個成員,可以存儲數據、參與集羣索引及搜索操作。節點通過爲其配置的ES集羣名稱確定其所要加入的集羣。

2)集羣(cluster)

ES可以作爲一個獨立的單個搜索服務器。不過,一般爲了處理大型數據集,實現容錯和高可用性,ES可以運行在許多互相合作的服務器上。這些服務器的集合稱爲集羣。

3)分片(Shard)

ES的“分片(shard)”機制可將一個索引內部的數據分佈地存儲於多個節點,它通過將一個索引切分爲多個底層物理的Lucene索引完成索引數據的分割存儲功能,這每一個物理的Lucene索引稱爲一個分片(shard)。

這樣的好處是可以把一個大的索引拆分成多個,分佈到不同的節點上。降低單服務器的壓力,構成分佈式搜索,提高整體檢索的效率(分片數的最優值與硬件參數和數據量大小有關)。分片的數量只能在索引創建前指定,並且索引創建後不能更改。

4)副本(Replica)

副本是一個分片的精確複製,每個分片可以有零個或多個副本。副本的作用一是提高系統的容錯性,當某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡。

3、ES的數據架構

1)索引(index)

ES將數據存儲於一個或多個索引中,索引是具有類似特性的文檔的集合。類比傳統的關係型數據庫領域來說,索引相當於SQL中的一個數據庫。

一個ES集羣中可以按需創建任意數目的索引,但根據不同的硬件配置,索引數有一個建議範圍(這個知識點我們以後進行詳細講解)【歡迎關注公衆號“ZeroTeHero”,獲取最新推送】。

2)類型(Type)

類型是索引內部的邏輯分區(category/partition),然而其意義完全取決於用戶需求。因此,一個索引內部可定義一個或多個類型(type)。一般來說,類型就是爲那些擁有相同的域的文檔做的預定義。類比傳統的關係型數據庫領域來說,類型相當於“表”

特別注意的是,根據官網信息:在Elasticsearch 6.0.0或更高版本中創建的索引只能包含一個映射類型。在5.x中創建的具有多種映射類型的索引將繼續像在Elasticsearch 6.x中一樣工作。**類型將在Elasticsearch 7.0.0中的API中棄用,並在8.0.0中完全刪除。**3)文檔(Document) 文檔是Lucene索引和搜索的原子單位,它是包含了一個或多個域的容器,基於JSON格式進行表示。文檔由一個或多個域組成,每個域擁有一個名字及一個或多個值,有多個值的域通常稱爲“多值域”。每個文檔可以存儲不同的域集,但同一類型下的文檔至應該有某種程度上的相似之處。相當於mysql表中的row。4)映射(Mapping) 映射是定義文檔及其包含的字段如何存儲和索引的過程。

例如,使用映射來定義:

  • 哪些字符串字段應該被視爲全文字段。
  • 哪些字段包含數字、日期或地理位置。
  • 文檔中所有字段的值是否應該被索引到catch-all _all字段中。
  • 日期值的格式。
  • 用於控制動態添加字段的映射的自定義規則。

每個索引都有一個映射類型,它決定了文檔的索引方式。

5)與 mysql 的對比

image

下節預告:ES的數據類型,敬請期待【歡迎關注公衆號“ZeroTeHero”,獲取最新推送】

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章