文件元資料
乙個文件不只有資料。它還包含了 元資料(metadata)—— 關於文件的資訊。三個必須的元資料節點是:
節點說明
index
文件儲存的地方
type
文件代表的物件的型別
id文件的唯一標識
索引(index)
這裡說的索引,是乙個名詞,乙個儲存關聯資料的地方。實際上,索引只是乙個用來指向乙個或多個分片(shards)的「邏輯命名空間」。 索引(index)類似於關係型資料庫裡的「資料庫」——它是我們儲存和索引關聯資料的地方。
事實上,我們的資料被儲存和索引在 分片(shards)中,索引只是乙個把乙個或多個分片分組在一起的邏輯空間。然而,這只是一些內部細節——我們的程式完全不用關心分片。對於我們的程式而言,文件儲存在 索引(index)中。剩下的細節由elasticsearch關心既可。
型別(type)
在關係型資料庫中,我們經常將相同類的物件儲存在乙個表裡,因為它們有著相同的結構。同理,在elasticsearch中,我們使用相同 型別(type)的文件表示相同的「事物」,因為他們的資料結構也是相同的。在es中的type就相當於關係型資料庫中的表。
_type 的名字可以是大寫或小寫,不能包含下劃線或逗號。我們將使用``blog`做為型別名。
唯一標識(id)
id僅僅是乙個字串,它與 _index 和 _type 組合時,就可以在elasticsearch中唯一標識乙個文件。當建立乙個文件,你可以自定義 _id ,也可以讓elasticsearch幫你自動生成。(自動生成id需要用post請求)
分片(shard)
乙個分片是乙個最小級別的工作單元。他只是儲存了索引中所有資料的一部分,分片就是乙個lucene例項,他本身就是乙個完整的搜尋引擎。我們的文件儲存在分片中,並且在分片中被索引,但應用程式不會直接與分片進行通訊,而是直接與索引進行通訊。
分片是elasticsearch在集群中分發資料的關鍵,把分片想象成資料的容器,文件儲存在分片中,然後分片分配到集群中的節點上。當集群擴容或縮小,es會自動在你的節點間遷移分片,使集群保持平衡。
分片可以是主分片和複製分片。索引中的每個文件屬於乙個單獨的主分片,所以主分片的數量決定了索引最多能儲存多少資料。
複製分片只是主分片的乙個副本,它可以防止硬體故障導致的資料丟失,同時可以提供讀請求,比如搜尋或者從別的shard取回文件
當索引建立完成的時候,主分片的數量就固定了,但是複製分片的數量可以隨時調整。
文件的索引將首先被儲存在主分片中,然後併發複製到對應的複製節點上。這可以確保我們的資料在主節點和複製節點上都可以被檢索。理論上講,隨著節點的增加,es的搜尋效能也會隨之增加(因為在分片數一定的情況下,節點數越多,每個分片所能分到到硬體資源 記憶體,cpu等越高。但節點數不大於分片數)。
當然,在同樣數量的節點上增加更多的複製分片並不能提高效能,因為這樣做的話平均每個分片的所占有的硬體資源就減少了,你需要增加硬體來提高吞吐量。不過這些額外的複製分片使我們有更多的冗餘:也就是說在節點充裕的情況下,增加複製分片,是通過空間換時間;
ElasticSearch常見問題
針對index數量 1 根據業務增量需求,採取基於日期模板建立索引,通過roll over api滾動索引 2 使用別名進行索引管理 3 採取curator進行索引的生命週期管理 針對儲存 4 每天凌晨定時對索引做force merge操作,以釋放空間 5 採取冷熱分離機制,熱資料儲存到ssd,提高...
elasticsearch常見問題總結
原因 主要是linux的版本過低 解決方案 重新安裝新版本的linux系統 原因 無法建立本地檔案問題,使用者最大可建立檔案數太小 解決方案 切換到root使用者,編輯limits.conf配置檔案,新增類似如下內容 vi etc security limits.conf 新增如下內容 soft n...
elasticsearch常見問題總結
原因 主要是linux的版本過低 解決方案 重新安裝新版本的linux系統 原因 無法建立本地檔案問題,使用者最大可建立檔案數太小 解決方案 切換到root使用者,編輯limits.conf配置檔案,新增類似如下內容 vi etc security limits.conf 新增如下內容 soft n...