iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 3
0
Elastic Stack on Cloud

Python&Elasticsearch 入門系列 第 3

IT鐵人第3天 Elasticsearch簡單介紹

今天就來講解Elasticsearch一些常見的名詞

接近實時(NRT):

從索引一個文件直到這個文件能夠被搜尋到有一個輕微的延遲

cluster(叢集):

一個叢集是由一個或多個節點所組成,所有節點共同持有整體資料,並一起提供索引和搜尋功能

node(節點):

節點是Elasticsearch實例(Instance),叢集的一部份,提供儲存資料,參與叢集的索引和搜尋,node有分成data node跟master node:
Data node:保存數據資料的node
Master node:處理建立/刪除的請求並執行、決定每個分片要被分配在哪個node上

shard(分片):

索引的分片,Elasticsearch會把索引分成好幾個份,每個分片本身也可以視作一個功能完善並且獨立的“索引”,分片可以被放置到叢集裡的任何一個節點上。
這麼做的好處是可以提升寫入效能及加速運算,舉例來說可能會發生以下狀況:
1.單個索引所儲存的資料量大於單個節點的硬體限制
2.大量的資料都存放在同一節點上,在進行搜尋請求時響應太慢
為了解決以上問題才會提供將索引分成多份(分片)的功能,分片的數量只能在索引創建之前指定

replica(副本):

索引的副本,每個副本都是分片的拷貝,當有索引或者分片(主)損壞或遺失時,就可以啟用副本來保持資料的完整性,另外也可以提升一部份的效能
被複製的分片被稱為主分片(primary shard),複製出來的分片被稱為複製分片(replica shard)
主分片與複製分片一定會被分配在不同的data node上

圖片出處:https://www.siscale.com/elasticsearch-shard-optimization/

routing(路由):

在向Elasticsearch存放數據時,一般都是根據id分配在不同的分片上,所以在查詢時Elasticsearch並不知道數據存放在哪個分片上,結果就是必須查遍所有分片來找到數據,造成一些效能上的損耗。
上述問題的解決方式,可以透過路由指定數據存放的分片,搜尋時就能透過路由指定分片查詢資料

Index(索引):

索引就是一個擁有幾分相似特徵的文件的集合,可以想像成一般的資料庫

Type:

在一個索引中,你可以定義一種或多種型別,可以想像成資料庫的一個表

id:

唯一值,可以想像成資料庫的主鍵Primary Key

document(文件):

可以被索引的最小單位,簡單來說就是透過條件搜尋出來的很多筆數據,每一筆數據都被稱為一份文件(document)

下一篇教大家如何用docker建立第一個自己的Elasticsearch叢集


上一篇
IT鐵人第2天 常見的Elastic Stack架構
下一篇
IT鐵人第4天 建立第一個Elasticsearch叢集
系列文
Python&Elasticsearch 入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言