1. 程式人生 > >elasticsearch(一) 之 elasticsearch初識

elasticsearch(一) 之 elasticsearch初識

一 、elasticsearch

elasticsearch 是一個開源的具有高度擴充套件性的全文搜尋和分析引擎。它可以快速幫助我們儲存和搜尋、分析大量資料。

在運維方面,我們常用它來儲存和分析日誌資料,通過filebeat +(redis)+ELK 搭建一個視覺化的實時日誌分析搜尋平臺。讓業務人員,開發人員可以該平臺檢視資料。

elasticsearch 是一個接近實時的搜尋平臺,從index文件到可搜尋文件只有少量的延遲(通常是一秒)

二 、 elasticsearch 名詞解釋

叢集(cluster)

一個或多個節點(伺服器)的集合,它們共同儲存您的整個資料,並提供跨所有節點的聯合索引和搜尋功能。叢集具有唯一名稱標識,預設情況下為“elasticsearch”。此名稱很重要,因為如果節點設定為按名稱加入群集,則該節點只能是群集的一部分。

確保不要在不同的環境中重用相同的群集名稱,否則最終會導致節點加入錯誤的群集。您可以使用logging-dev,logging-stage以及logging-prod 用於開發,登臺和生產叢集。

請注意,如果叢集中只有一個節點,那麼它是完全正常的。此外,您還可以擁有多個獨立的叢集,每個叢集都有自己唯一的叢集名稱。

節點(node)

節點是作為叢集一部分的單個伺服器,儲存資料並參與叢集的索引和搜尋功能。就像叢集一樣,節點由名稱標識,預設情況下,該名稱是在啟動時分配給節點的隨機通用唯一識別符號(UUID)。如果不使用預設值,可以定義所需的任何節點名稱。此名稱對於管理目的非常重要,您可以在其中識別網路中哪些伺服器與Elasticsearch叢集中的哪些節點相對應。

可以將節點配置為按叢集名稱加入特定叢集。預設情況下,每個節點都設定為加入一個名為elasticsearch的叢集,這意味著如果您在網路上啟動了許多節點並且假設它們可以相互發現 - 它們將自動形成並加入一個名為的叢集elasticsearch。

在單個叢集中,您可以擁有任意數量的節點。此外,如果您的網路上當前沒有其他Elasticsearch節點正在執行,則預設情況下啟動單個節點將形成一個名為的新單節點叢集elasticsearch。

索引(index)

索引是具有某些類似特徵的文件集合。例如,您可以擁有客戶資料的索引,產品目錄的索引以及訂單資料的一個索引。索引由名稱標識(必須全部小寫),此名稱用於在對其中的文件執行索引,搜尋,更新和刪除操作時引用索引。

在單個群集中,您可以根據需要定義任意數量的索引。在實際的情況中,我們通常會按照天數建立索引,每天一個索引。

type(型別)

這個型別在6.0.0中被刪除

Document(文件)

文件是可以編制索引的基本資訊單元。一個索引是由一個或者或者多個文件構成的,例如,您可以為單個客戶提供文件,為單個產品提供另一個文件,為單個訂單提供另一個文件。該文件以JSON(JavaScript Object Notation)表示,JSON是一種普遍存在的網際網路資料格式。

在索引/型別中,您可以根據需要儲存任意數量的文件。請注意,儘管文件實際上駐留在索引中,但實際上必須將文件編入索引/分配給索引中的型別。
(就是我們查出來的每一條結果)

shards(分片)Replicas(副本)

索引可能儲存大量可能超過單個節點的硬體限制的資料。例如,佔用1TB磁碟空間的十億個文件的單個索引可能不適合單個節點的磁碟,或者可能太慢而無法單獨從單個節點提供搜尋請求。

為了解決這個問題,Elasticsearch提供了將索引細分為多個稱為分片的功能。建立索引時,只需定義所需的分片數即可。每個分片本身都是一個功能齊全且獨立的“索引”,可以託管在叢集中的任何節點上。

分片很重要,主要有兩個原因:

  1. 它允許您水平拆分/縮放內容量
    它允許您跨分片(可能在多個節點上)分佈和並行化操作,從而提高效能/吞吐量
    分片的分佈方式以及如何將其文件聚合回搜尋請求的機制完全由Elasticsearch管理,對使用者而言是透明的。

  2. 在可能發生故障的網路/雲環境中,非常有用,強烈建議使用故障轉移機制,以防分片/節點以某種方式離線或因任何原因消失。為此,Elasticsearch允許您將索引的分片的建立Replicas(副本)

Replicas很重要,主要有兩個原因:

  1. 它在分片/節點發生故障時提供高可用性。因此,請務必注意,副本分片永遠不會在與從中複製的原始/主分片相同的節點上分配。
    它允許您擴充套件搜尋量/吞吐量,因為可以在所有副本上並行執行搜尋。
    總而言之,每個索引可以拆分為多個分片。索引也可以副本為零(表示沒有副本)或更多次。複製後,每個索引都將具有主分片(從中複製的原始分片)和副本分片(主分片的副本)。

  2. 可以在建立索引時為每個索引定義分片和副本的數量。建立索引後,您還可以隨時動態更改副本數。您可以使用_shrink和_splitAPI 更改現有索引的分片數,但這不是一項簡單的任務,在之前預先計劃好預正確的分片數量才是最佳方法。

預設情況下,Elasticsearch中的每個索引都分配了5個主分片和1個副本,這意味著如果群集中至少有兩個節點,則索引將包含5個主分片和另外5個副本分片(1個完整副本),總計為每個索引10個分片。但是如果是單節點的話,預設是隻有5主分片沒有副本的。

每個Elasticsearch分片都是基於Lucene索引。單個Lucene索引中可以包含最大數量的文件。截止LUCENE-5843,限制是2,147,483,519(= Integer.MAX_VALUE - 128)文件。您可以使用_cat/shardsAPI 監控分片大小。