天天看點

ElasticSearch系列之---基本概念介紹

ElasticSearch簡介

ElasticSearch(以下簡稱ES)在官網的定義為:Elasticsearch 是一個分布式、可擴充、實時的 RESTful 風格的搜尋和資料分析引擎,是一個“天然”支援分布式的基于Apache Lucene(TM)的搜尋分析引擎。它可以被下面這樣準确的形容:

  • 一個分布式的實時文檔存儲,每個字段都可以被索引與搜尋
  • 一個分布式實時分析搜尋引擎
  • 能勝任上百個服務節點的擴充,并支援 PB 級别的結構化或者非結構化資料

基本概念:

  1. 節點(Node):一個運作中的 Elasticsearch 執行個體稱為一個 節點,它是屬于叢集一部分的單一伺服器,存儲資料并參與叢集的索引和搜尋功能。一個節點由一個名稱來辨別,預設情況下該名稱是在啟動時配置設定給節點的随機通用唯一辨別符(UUID)。如果不需要預設值,可以定義任何想要的節點名稱。可以将節點配置為按叢集名稱加入特定叢集,預設情況下,每個節點都設定為加入一個名為“elasticsearch”

    的叢集。

  2. 叢集(Cluster):叢集是由一個或者多個擁有相同 

    cluster.name

     配置的節點組成,一個叢集由一個唯一叢集ID确定,它們共同承擔資料和負載的壓力。當有節點加入叢集中或者從叢集中移除節點時,叢集将會重新平均分布所有的資料。
  3. 分片(sharde):一個分片shard是一個最小級别的工作單元,僅儲存了索引中所有資料的一部分。 分片就是一個Lucene執行個體,并且它本身就是一個完整的搜尋引擎,也是天然分布式的展現。
  4. 副本(replia):為提高查詢吞吐量或者實作高可用性,可以使用分片副本。副本是一個分片的精确複制,每個分片可以有零個或者多個副本。 當主分片丢失時,如:該分片所在的資料不可用時,叢集将副本提升為新的主分片,以保證高可用性。
  5. 索引(index):索引是具有相似特性的文檔集合,類似于傳統關系資料庫中的一個資料庫,是一個存儲關系型文檔的地方。資料被存儲和索引在分片中,索引僅僅是一個把一個或者多個分片分組在一起的邏輯空間。 索引名字必須是全部小寫,不允許以下劃線開頭,不能包含逗号。
  6. 類型(type):在索引中,可以定義一個或多個類型。類型是索引的邏輯類别分區,類似于資料庫中的表。
  7. 文檔(document):文檔是可以被索引的資訊的基本機關。
  8. 映射(mapping):映射相對于資料庫來說相當于定義表結構,表示了該索引的一些字段類型等資訊。資料文檔存儲到ES内部文檔的一種對應關系。這種對應關系決定了文檔存儲資料的準确性。隻有知道了文檔中每個域資料的實際存儲含義,才能完成正确的存儲和搜尋。
    1. 動态映射:當将資料填入索引類型中,無需設定資料域和映射。這都是歸功于動态映射。ES會自動識别填入的資料,無論是簡單資料類型還是對象資料類型。
    2. 定制映射:預先定義index type的映射,使用者指定字段的type等資訊。

節點類型

ES叢集中節點分為:主節點(master)、資料節點(data)、用戶端節點(client),節點的類别是由elasticsearch.yml 配置檔案的node.master、node.data兩個參數的值來定義的。

  • node.master:這個屬性表示節點是否具有成為主節點的資格。注意:此屬性的值為true,并不意味着這個節點就是主節點。因為真正的主節點,是由多個具有主節點資格的節點進行選舉産生的。是以,這個屬性隻是代表這個節點是不是具有主節點選舉資格。預設情況下,elasticsearch叢集中每個節點都有成為主節點的資格,也都存儲資料,還可以提供查詢服務。這些功能是由兩個屬性控制的。node.master和node.data,預設情況下這兩個屬性的值都是true。
  • node.data:這個屬性表示節點是否存儲資料。

節點類别

node.master=true node.master=false
node.data=true master節點、data節點 master節點、client節點
node.data=false data節點 client節點

資源位址

官網:https://www.elastic.co

源碼git:https://github.com/elastic/elasticsearch

ES中文論壇:https://elasticsearch.cn/

繼續閱讀