今天就來講解Elasticsearch一些常見的名詞
從索引一個文件直到這個文件能夠被搜尋到有一個輕微的延遲
一個叢集是由一個或多個節點所組成,所有節點共同持有整體資料,並一起提供索引和搜尋功能
節點是Elasticsearch實例(Instance),叢集的一部份,提供儲存資料,參與叢集的索引和搜尋,node有分成data node跟master node:
Data node:保存數據資料的node
Master node:處理建立/刪除的請求並執行、決定每個分片要被分配在哪個node上
索引的分片,Elasticsearch會把索引分成好幾個份,每個分片本身也可以視作一個功能完善並且獨立的“索引”,分片可以被放置到叢集裡的任何一個節點上。
這麼做的好處是可以提升寫入效能及加速運算,舉例來說可能會發生以下狀況:
1.單個索引所儲存的資料量大於單個節點的硬體限制
2.大量的資料都存放在同一節點上,在進行搜尋請求時響應太慢
為了解決以上問題才會提供將索引分成多份(分片)的功能,分片的數量只能在索引創建之前指定
索引的副本,每個副本都是分片的拷貝,當有索引或者分片(主)損壞或遺失時,就可以啟用副本來保持資料的完整性,另外也可以提升一部份的效能
被複製的分片被稱為主分片(primary shard),複製出來的分片被稱為複製分片(replica shard)
主分片與複製分片一定會被分配在不同的data node上
圖片出處:https://www.siscale.com/elasticsearch-shard-optimization/
在向Elasticsearch存放數據時,一般都是根據id分配在不同的分片上,所以在查詢時Elasticsearch並不知道數據存放在哪個分片上,結果就是必須查遍所有分片來找到數據,造成一些效能上的損耗。
上述問題的解決方式,可以透過路由指定數據存放的分片,搜尋時就能透過路由指定分片查詢資料
索引就是一個擁有幾分相似特徵的文件的集合,可以想像成一般的資料庫
在一個索引中,你可以定義一種或多種型別,可以想像成資料庫的一個表
唯一值,可以想像成資料庫的主鍵Primary Key
可以被索引的最小單位,簡單來說就是透過條件搜尋出來的很多筆數據,每一筆數據都被稱為一份文件(document)
下一篇教大家如何用docker建立第一個自己的Elasticsearch叢集