elasticsearch(一) 之 elasticsearch初識
一 、elasticsearch
elasticsearch 是一個開源的具有高度擴展性的全文搜索和分析引擎。它可以快速幫助我們存儲和搜索、分析大量數據。
在運維方面,我們常用它來存儲和分析日志數據,通過filebeat +(redis)+ELK 搭建一個可視化的實時日志分析搜索平臺。讓業務人員,開發人員可以該平臺查看數據。
elasticsearch 是一個接近實時的搜索平臺,從index文檔到可搜索文檔只有少量的延遲(通常是一秒)
ELK架構圖

二 、 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提供了將索引細分為多個稱為分片的功能。創建索引時,只需定義所需的分片數即可。每個分片本身都是一個功能齊全且獨立的“索引”,可以托管在集群中的任何節點上。
分片很重要,主要有兩個原因:
-
它允許您水平拆分/縮放內容量
它允許您跨分片(可能在多個節點上)分布和并行化操作,從而提高性能/吞吐量
分片的分布方式以及如何將其文檔聚合回搜索請求的機制完全由Elasticsearch管理,對用戶而言是透明的。 -
在可能發生故障的網絡/云環境中,非常有用,強烈建議使用故障轉移機制,以防分片/節點以某種方式脫機或因任何原因消失。為此,Elasticsearch允許您將索引的分片的創建Replicas(副本)
Replicas很重要,主要有兩個原因:
-
它在分片/節點發生故障時提供高可用性。因此,請務必注意,副本分片永遠不會在與從中復制的原始/主分片相同的節點上分配。
它允許您擴展搜索量/吞吐量,因為可以在所有副本上并行執行搜索。
總而言之,每個索引可以拆分為多個分片。索引也可以副本為零(表示沒有副本)或更多次。復制后,每個索引都將具有主分片(從中復制的原始分片)和副本分片(主分片的副本)。 -
可以在創建索引時為每個索引定義分片和副本的數量。創建索引后,您還可以隨時動態更改副本數。您可以使用_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 監控分片大小。

浙公網安備 33010602011771號