Elasticsearch中的基本概念

集羣(cluster)
  • 表明一個集羣,集羣中有多個節點(node),其中有一個爲主節點,這個主節點是能夠經過選舉產生的,主從節點是對於集羣內部來講的。es 的一個概念就是去中心化,字面上理解就是無中心節點,這是對於集羣外部來講的,由於從外部來看 es 集羣,在邏輯上是個總體,你與任何一個節點的通訊和與整個 es 集羣通訊是等價的。
索引(index)
  • ElasticSearch 將它的數據存儲在一個或多個索引(index)中。用 SQL 領域的術語來類比,索引就像數據庫,能夠向索引寫入文檔或者從索引中讀取文檔,並經過ElasticSearch 內部使用 Lucene 將數據寫入索引或從索引中檢索數據。
文檔(document)
  • 文檔(document)是 ElasticSearch 中的主要實體。對全部使用 ElasticSearch的案例來講,他們最終均可以歸結爲對文檔的搜索。文檔由字段構成。
映射(mapping)
  • 全部文檔寫進索引以前都會先進行分析,如何將輸入的文本分割爲詞條、哪些詞條又會被過濾,這種行爲叫作映射(mapping)。通常由用戶本身定義規則。
類型(type)
  • 每一個文檔都有與之對應的類型(type)定義。這容許用戶在一個索引中存儲多種文檔類型,併爲不一樣文檔提供類型提供不一樣的映射。
分片(shards)
  • 表明索引分片,es 能夠把一個完整的索引分紅多個分片,這樣的好處是能夠把一個大的索引拆分紅多個,分佈到不一樣的節點上。構成分佈式搜索。分片的數量只能在索引建立前指定,而且索引建立後不能更改。5.X 默認不能經過配置文件定義分片
副本(replicas)
  • 表明索引副本,es 能夠設置多個索引的副本,副本的做用一是提升系統的容錯性,當個某個節點某個分片損壞或丟失時能夠從副本中恢復。二是提升 es 的查詢效率,es 會自動對搜索請求進行負載均衡。
數據恢復(recovery)
  • 表明數據恢復或叫數據從新分佈,es 在有節點加入或退出時會根據機器的負載對索引分片進行從新分配,掛掉的節點從新啓動時也會進行數據恢復。
  • GET /_cat/health?v #能夠看到集羣狀態
數據源(River)
  • 表明 es 的一個數據源,也是其它存儲方式(如:數據庫)同步數據到 es 的一個方法。它是以插件方式存在的一個 es 服務,經過讀取 river 中的數據並把它索引到 es中,官方的 river 有 couchDB 的,RabbitMQ 的,Twitter 的,Wikipedia 的,river這個功能將會在後面的文件中重點說到。
網關(gateway)
  • 表明 es 索引的持久化存儲方式,es 默認是先把索引存放到內存中,當內存滿了時再持久化到硬盤。當這個 es 集羣關閉再從新啓動時就會從 gateway 中讀取索引數據。es 支持多種類型的 gateway,有本地文件系統(默認),分佈式文件系統,Hadoop的 HDFS 和 amazon 的 s3 雲存儲服務。
自動發現(discovery.zen)
  • 表明 es 的自動發現節點機制,es 是一個基於 p2p 的系統,它先經過廣播尋找存在的節點,再經過多播協議來進行節點之間的通訊,同時也支持點對點的交互。
  • 5.X 關閉廣播,須要自定義
通訊(Transport)
  • 表明 es 內部節點或集羣與客戶端的交互方式,默認內部是使用 tcp 協議進行交互,同時它支持 http 協議(json 格式)、thrift、servlet、memcached、zeroMQ 等的傳輸協議(經過插件方式集成)。
  • 節點間通訊端口默認:9300-9400
分片和複製(shards and replicas)

  一個索引能夠存儲超出單個結點硬件限制的大量數據。好比,一個具備 10 億文檔的索引佔據 1TB 的磁盤空間,而任一節點可能沒有這樣大的磁盤空間來存儲或者單個節點處理搜索請求,響應會太慢。node

  爲了解決這個問題,Elasticsearch 提供了將索引劃分紅多片的能力,這些片叫作分片。當你建立一個索引的時候,你能夠指定你想要的分片的數量。每一個分片自己也是一個功能完善而且獨立的「索引」,這個「索引」 能夠被放置到集羣中的任何節點上。數據庫

  分片之因此重要,主要有兩方面的緣由:json

  • 容許你水平分割/擴展你的內容容量
  • 容許你在分片(位於多個節點上)之上進行分佈式的、並行的操做,進而提升性能/吞吐量

  至於一個分片怎樣分佈,它的文檔怎樣聚合回搜索請求,是徹底由 Elasticsearch 管理的,對於做爲用戶的你來講,這些都是透明的。網絡

  在一個網絡/雲的環境裏,失敗隨時均可能發生。在某個分片/節點由於某些緣由處於離線狀態或者消失的狀況下,故障轉移機制是很是有用且強烈推薦的。爲此, Elasticsearch 容許你建立分片的一份或多份拷貝,這些拷貝叫作複製分片,或者直接叫複製。app

  複製之因此重要,有兩個主要緣由:
  • 在分片/節點失敗的狀況下,複製提供了高可用性。複製分片不與原/主要分片置於同一節點上是很是重要的。由於搜索能夠在全部的複製上並行運行,複製能夠擴展你
的搜索量/吞吐量
  • 總之,每一個索引能夠被分紅多個分片。一個索引也能夠被複制 0 次(即沒有複製)或屢次。一旦複製了,每一個索引就有了主分片(做爲複製源的分片)和複製分片(主分片的拷貝)。
  • 分片和複製的數量能夠在索引建立的時候指定。在索引建立以後,你能夠在任什麼時候候動態地改變複製的數量,可是你不能再改變分片的數量。
  • 5.X 默認 5:1 5 個主分片,1 個複製分片
默認狀況下,Elasticsearch 中的每一個索引分配 5 個主分片和 1 個複製。這意味着,若是你的集羣中至少有兩個節點,你的索引將會有 5 個主分片和另外 5 個複製分片(1 個徹底拷貝),這樣每一個索引總共就有 10 個分片。

對應關係:
索引 ------------數據庫
類型 ------------表
文檔------------數據
映射------------對索引類型的配置
相關文章
相關標籤/搜索