當前位置:成語大全網 - 書法字典 - 彈性搜索集群

彈性搜索集群

碎片化:碎片化是將數據分割成多個部分。默認情況下,Elasticsearch會將指數分為五個部分。

數據存儲在碎片中,這些碎片分布在集群中的所有節點上。

副本:副本是原始片段的副本,與原始片段相同。Elasticsearch默認會生成壹個副本,所以相當於五個原始片段和五個片段副本,相當於壹個數據的兩個副本和十個片段。

主節點:即主節點。主節點的主要職責與集群操作相關,例如創建或刪除索引,跟蹤哪些節點是集群的壹部分,以及決定將哪些片段分配給相關節點。穩定的主節點對集群的健康非常重要。默認情況下,任何群集中的壹個節點都可以被選為主節點。索引數據和搜索查詢等操作將占用大量cpu、內存和io資源。為了確保集群的穩定性,將主節點與數據節點分離是更好的選擇。雖然主節點也可以協調節點、路由搜索以及將數據從客戶端添加到數據節點,但最好不要使用這些專用的主節點。壹個重要的原則是盡可能少做工作。

數據節點:即數據節點。數據節點主要用於存儲索引數據,主要用於增加、刪除、修改和查詢文檔、聚合等。數據節點對CPU、內存和IO的要求很高,因此需要在優化過程中監控數據節點的狀態,當資源不足時,需要向集群中添加新節點。

負載均衡節點:又稱客戶端節點,又稱客戶端節點。當壹個節點沒有被配置為主節點或數據節點時,它只能處理路由請求、搜索、索引分發操作等。本質上,客戶端節點相當於壹個智能負載平衡器。在大型集群中,獨立的客戶端節點非常有用。它協調主節點和數據節點。當客戶端節點加入集群時,它可以獲得集群的狀態,並根據集群的狀態直接路由請求。

預處理節點:也稱為攝取節點,可以在索引前對數據進行預處理。事實上,默認情況下所有節點都支持攝取操作,或者可以將某個節點專門配置為攝取節點。

1.Master:主節點,每個集群有且只有壹個。

盡量避免主節點也是數據節點:node.datatrue。

主節點的主要職責是負責集群級別的相關操作,管理集群更改(如創建或刪除索引),跟蹤哪些節點是集群的壹部分,以及決定將哪些碎片分配給相關節點。

2.投票:投票節點

Node.voting_only = true(即使配置了data.master = true,也只有投票節點不會參選,但它們仍可用作數據節點)。

3.協調:協調節點

每個節點隱含地是壹個協調節點。如果同時設置了data.master = false和data.data=false,此節點將成為僅協調節點。

4.合格主節點(候選節點)

可以被選為主節點的節點。

5.數據節點(數據節點)

主要負責數據存儲和查詢服務。

配置:

這是ES節點的默認配置,它們既是候選節點也是數據節點。壹旦這樣的節點被選為主節點,壓力就會相對較大。壹般來說,主節點應該只承擔相對輕量級的任務,如創建刪除索引、切片和平衡等。

只有作為候選節點,而不是數據節點,才能競選主節點,當選後才能成為真正的主節點。

既不作為候選節點,也不作為數據節點,即只作為協調節點,負責負載均衡。

不是作為候選節點,而是作為數據節點,這類節點主要負責數據存儲和查詢服務。

協調節點是如何工作的,他如何找到相應的節點?

每個節點保存集群的狀態,只有主節點可以修改集群的狀態信息。

Cluster Starte維護集群中的必要信息。

所有節點信息

所有索引及其相關的映射和設置信息

零碎的路由信息

協調節點作為es節點中的壹個節點,可以被es集群中的所有節點默認用作協調節點,主要用於請求轉發和請求響應處理等輕量級操作。

這意味著如果他們收到用戶請求,他們可以處理用戶請求。

狀態字段指示當前群集作為壹個整體是否正常工作。它的三種顏色具有以下含義:

所有綠色的主片和副本片都運行正常。

黃色所有主切片都正常運行,但並非所有副本切片都正常運行。

紅色有壹個主切片不能正常工作。

為文檔編制索引時,文檔將存儲在主切片中。Elasticsearch如何知道文檔應該存儲在哪個分片中?當我們創建壹個文檔時,它如何決定這個文檔應該存儲在片段1還是片段2中?

首先,它不會是隨機的,否則我們將來不知道去哪裏找文檔。事實上,這壹過程是根據以下公式確定的:

路由是壹個變量值,默認為文檔的_id,也可以設置為自定義值。路由通過哈希函數生成壹個數字,然後將該數字除以number_of_primary_shards(主切片數)得到余數。這個余數分布在0和number _ of _ primary _ shards-1之間,是我們要查找的文檔所在的片的位置。

我們可以向集群中的任何節點發送請求。每個節點都有能力處理任何請求。每個節點都知道集群中任何文檔的位置,因此它可以直接將請求轉發到所需的節點。在下面的示例中,所有請求都發送到節點1,我們稱之為協調節點。

以下是在主切片和輔助切片以及任何副本切片上成功創建、索引和刪除文檔所需的壹系列步驟:

壹致性壹致性:該參數的值可以設置為one(只要主切片的狀態正常,就允許write _ operation)、all(僅當主切片和所有副本切片的狀態正常時才允許write _ operation)或quorum。默認值為quorum,也就是說,如果大多數碎片副本的狀態為ok,則允許它們執行_ write _ operations。

主節點選舉當然是由符合主節點條件的節點發起的。

深入了解Elasticsearch 7.x的新集群協調層;

/檔案/332

彈性搜索的選舉機制

/archives/164

掌握彈性搜索的選舉機制

blogs.com/jelly12345/p/15319549.html

在麻省理工學院之前,所有數據都停留在緩沖區或操作系統緩存中,這兩者都是內存。壹旦機器死機,內存中的數據就會丟失,因此需要將數據對應的操作寫入壹個特殊的日誌中以詢問價格。壹旦機器停機並重新啟動,es就會主動讀取translog中日誌文件中的數據,並將其恢復到內存緩沖區和操作系統緩存中。

清空現有的事務日誌文件,然後重新啟動事務日誌。此時,提交成功。默認值是每30分鐘提交壹次,但是如果事務日誌文件太大,也會觸發提交。整個提交過程稱為刷新操作。我們也可以使用ES API。手動執行刷新操作,手動將操作系統緩存的數據同步到磁盤,記錄提交點,並清空事務日誌文件。

補充:其實translog的數據是先寫入OS緩存的,默認每5秒刷新壹次數據到硬盤。也就是說,緩沖區或translog文件的操作系統緩存中可能只有5秒鐘的數據。如果此時機器掛起,它將丟失5秒鐘的數據,但這種性能更好。我們也可以直接將fsync的每壹個操作都傳到磁盤上,但是性能會比較差。

如果操作被刪除,在提交時會生成壹個。del文件,表示壹個文檔被標記為已刪除,因此在搜索時,您將根據的狀態知道該文件已被刪除。del文件

如果該操作被更新,則意味著原始單據被標記為刪除,然後可以重寫壹條數據。

每次更新緩沖區時,都會生成壹個段文件,因此默認情況下,會生成許多段文件文件,並且會定期執行合並操作。

每次合並時,您會將多個段文件合並為壹個,同時刪除標記為刪除的文件,然後將新的段文件寫入磁盤,其中將寫入壹個提交點以標識所有新的段文件,然後打開新的段文件進行搜索。

段是不可變的,因此您既不能從舊段中刪除文檔,也不能修改舊段來更新文檔。相反,每個提交點將包含壹個。del文件,該文件將列出這些已刪除文檔的片段信息。

當文檔被“刪除”時,它實際上只在。del文件標記為刪除的文檔仍然可以通過查詢進行匹配,但是在返回最終結果之前,該文檔將從結果集中刪除。

文檔更新是類似的操作:當文檔更新時,舊版本的文檔被標記為刪除,新版本的文檔被索引到新的段中。有可能文檔的兩個版本都將通過查詢進行匹配,但是在返回結果集之前,已刪除的舊文檔版本已被刪除。

因為自動刷新過程每秒鐘都會創建壹個新段,這將導致段數在短時間內急劇增加。而且段位太多會帶來更大的麻煩。每個段都會消耗文件句柄、內存和cpu周期。更重要的是,每個搜索請求必須輪流檢查每個段;所以分段越多,搜索速度越慢。

Elasticsearch通過在後臺合並片段來解決這個問題。小段被合並成大段,然後這些大段被合並成更大的段。

合並片段時,那些舊的已刪除文檔將從文件系統中清除。已刪除的文檔(或已更新文檔的舊版本)不會被復制到新的大段中。

合並大段需要大量I/O和CPU資源,如果不加檢查,將會影響搜索性能。默認情況下,Elasticsearch將限制合並過程的資源,因此搜索仍然有足夠的資源來出色地執行。

/QQ _ 21299835/文章/詳情/106534644