ES對于數據上的數據模型如下:
index type document field mapping
與數據庫的概念一一對應的為
db table row column schema
ES 導入數據時會自動的建立document的mapping, 導入的數據為json數據格式
ES 中所有的搜索都是基于文檔的,在此基礎上又三種搜索方式:
檢索(根據 index, type, id 查找某一文檔)
搜索(調用 search接口根據query進行簡單或者復雜的條件進行搜索,包括簡單搜索,復雜搜索,全文搜索,段落搜索)
聚合統計 ( 調用 search接口根據aggs 進行各種統計操作,并且可以配合query進行使用)
一個節點(node)就是一個Elasticsearch實例,一個集群由多個節點組成,它們擁有相同的
cluster。name. 當加入新的節點或者刪除一個節點時,集群就會自動感知到并平衡數據。
集群中的一個節點會被選舉為主節點(master),它將臨時管理集群級別的一些變更,例如新建或者刪除索引。主節點不參與文檔級別的變更或者搜索,該節點不會成為集群的瓶頸。
集群健康:
集群監控有三種狀態: green, yellow 或red
顏色 意義
green 所有的主要分片和復制分片都可用
yellow 所有主要分片可用,但不是所有復制分片都可用
red 不是所有的主要分片都可用
主要分片(primary sahrd) 復制分片(replica shard)
索引:
索引(index)關聯存儲數據的地方,用來指向一個或多個分片(shards)的 邏輯命名空間
分片:
一個分片(shard)是一個最小級別 "工作單元(worker unit)",保存了索引的一部分數據,(可以理解為hadoop中hdfs的塊以及mapreduce中的task集合體,即處理一塊數據的數據和程序)
實現上 一個分片就是一個Luence實例,并且它本身就是一個完整的搜索引擎。文檔存儲在分片中,并且在分片中被索引。
當索引創建完成的時候,主分片的數量就固定了(默認為5),復制分片的數量可以隨時調整
(需要提前思考創建多少主分片,因為主分片的數量是不變的,文檔的大小和復雜度,期望的響應時間,文檔數量,文檔的屬性等,如果數據量可能很大,就需要創建多個分片,從而提高搜索的響應時間)
故障轉移:
按照道理來講,只要節點之間擁有相同的 cluster.name 那么它們就會被自動發現,如果沒有,則有可能是 網絡廣播被禁用,或者防火墻阻止了節點通信
問題一:當主節點(master)掛了,其他節點可以選舉為主節點,但是主節點的元數據呢,還是說主節點的元數據也已經在其他節點有備份。