Elasticsearch 的一些關鍵概念

2022-01-11 06:18:58 字數 1667 閱讀 4883

我更喜歡把 elasticsearch 作為一種 nosql 去理解,它的一些開發概念和 mongodb 以及 redis 沒有太大的區別,不過了解 elasticsearch 中的一些核心概念對於你後續使用它仍然有非常大的幫助。

近實時查詢(near realtime)

elasticsearch 是乙個能提供近實時查詢的搜尋服務引擎,這意味著從索引文件到真正可搜尋之間會有乙個輕微的延遲(大概在一秒內)。

節點和集群

節點(node)是乙個執行著的 elasticsearch 例項,你可以認為是單個伺服器。集群(cluster)是乙個或多個節點的集合,他們協同工作,共享資料並提供故障轉移和擴充套件功能。集群由唯一名稱標識,如 .net core 中的環境名稱,推薦在不同的環境中使用諸如 development,production 之類的名稱部署開發。其實節點和集群就是 web 開發中的常見概念而已,大家注意區分即可。

文件文件是可索引資訊的基本單元,以json表示。你可以用其來定義單個產品資訊或是員工資訊。我們可以把文件理解為資料庫文件中的行列資料。在索引/型別中,您可以儲存任意數量的文件。文件有幾個共同不可缺的屬性,分別為 _index, _type, _id, 針對特定乙個或一類文件進行操作時,必須指定這些屬性。

最後要提醒大家的是,雖然文件物理上是駐留在索引中,但實際上文件必須索引/分配給索引中的型別。

索引索引是具有某些相似特徵的文件的集合,它和資料庫中的索引概念並不十分相同。我們可以把索引理解為資料庫文件中的資料庫。事實上,我們的資料被儲存和索引在分片(shards)中,索引只是乙個把乙個或多個分片分組在一起的邏輯空間。然而,這只是一些內部細節——我們的程式完全不用關心分片。

型別在索引中,我們可以定義乙個或多個型別。型別是索引的邏輯類別/分割槽,其語義完全由開發者決定。通常,為具有一組公共欄位的文件定義型別。例如,假設開發者執行部落格平台並將所有資料儲存在乙個索引中。在此索引中,我們可以為使用者資料定義型別,為部落格資料定義另一種型別,並為注釋資料定義另一種型別。我們可以把索引理解成資料庫文件中的表。

以下是 es 和 關係型資料庫的簡單模擬

relational db -> databases -> tables -> rows -> columns

elasticsearch -> indices(索引簇)-> types -> documents -> fields

分片和複製

理論上,索引可以儲存盡可能多的資料,但是這種情況下效能往往不太樂觀,或者常見的磁碟容量限制也不能允許。所以 elasticsearch 提供了類似於 mongodb 中的分片功能,該功能能將索引細分為多個分片。每個分片本身是乙個功能完全和獨立的「索引」,可以託管在集群中的任何節點上。

同樣的,有分片技術來處理資料量增長快速的問題,就意味著需要複製技術來應對這種過程中(其實不只是該過程,任何情況下都應該有安全意識)資料安全的問題。elasticsearch 允許您將索引分片的乙個或多個副本轉換為所謂的副本分片。複製技術為我們提供了資料的高可用性和搜尋吞吐的擴充套件性。不過需要注意的是,副本分片從不分配在與從其複製的原始/主分片相同的節點上。

總而言之,每個索引可以拆分為多個分片。索引也可以複製為零(意味著沒有副本)或更多次。一旦複製,每個索引將具有主分片(從索引複製的原始分片)和副本分片(主分片的副本)。開發者可以在建立索引時就為每個索引定義分片和副本的數量。建立索引後,可以隨時動態更改副本數,但不能在此過程後隨即更改分片數。

Elasticsearch 索引管理 一

本文翻譯自elasticsearch官方指南的索引管理 index management 一章 我們已經了解了es是如何在不需要任何複雜的計畫和安裝就能讓我們很容易地開始開發乙個新的應用的。但是,用不了多久你就會想要仔細調整索引和搜尋過程來更好的適配你的用例。幾乎所有的定製都和索引 index 以及...

Elasticsearch入門簡介(一)

elasticsearch 是乙個高可用開源全文檢索和分析元件。提供儲存服務,搜尋服務,大資料準實時分析等。一般用於提供一些提供複雜搜尋的應用。elasticsearch 提供了一套基於restful風格的全文檢索服務元件。前身是compass,直到2010被一家公司接管進行維護,開始商業化,並提供...

ElasticSearch(一) 簡單介紹

elasticsearch是乙個基於lucene的搜尋伺服器。它提供了乙個分布式多使用者能力的全文搜尋引擎,基於restful web介面。驗證是否成功 http localhost 9200 pretty 一 es的核心概念 cluster 代表乙個集群,集群中有多個節點,其中有乙個為主節點,這個...