elasticsearch Getting Started (一)-簡介

elasticsearch Getting Started

作者博客地址

原文鏈接(英文)

基本概念

本部分描述一些 elasticsearch 的核心概念,先了解這些概念有利於學習elasticsearch的過程。

近乎實時性(Near Realtime NRT)

elasticsearch是一個近乎實時的搜索平臺,這就意味着從索引某一個文檔到可查詢這篇文檔之間會有輕微的延時(大約1s,可以配置);

集羣

集羣是一個或者多個節點(服務器)一起管理整個的數據,提供對所有節點聯合索引和查詢能力的集合。一個集羣是通過一個唯一的cluster name來區分的,默認爲elasticsearch。這個名稱很重要,因爲一個節點只能通過這個名字加入到某一個特定的集羣。要保證你不會在不同環境下重用同一個cluster name,不然你可能會將節點加入到錯誤的集羣中。注意,在一個集羣中只擁有一個節點是可以的。

節點

一個節點就是集羣中的一個服務器,用來存儲數據,提供索引和查詢功能,跟集羣一樣,一個節點用一個唯一的名稱作爲區分,默認是一個隨機的Marvel character,你可以定義任何名稱如果你不想用默認的。這個名稱便於區分你網絡中的服務器對應於集羣中的哪個節點。
一個節點可以通過cluster name配置加入某一個集羣,默認加入elasticsearch集羣,這就意味着,如果你啓動了一些節點(假設他們可以互相發現對方),他們會自動的加入到elasticsearch集羣中。

索引

一個索引就是一些相同特徵的文檔集合,比如,你可以用一個索引存儲用戶信息,用另外一個索引存儲訂單信息。一個所以是通過名稱區分的(必須全部小寫),當你進行索引,查詢,更新和刪除操作時,用這個名稱指向該索引。
在一個集羣中可以隨意定義索引的個數。

類型

在一個索引中,可以定義一個或多個類型。一個類型就是在索引中語義完全由你決定的邏輯分類或者分區,通常一個文檔類型會被定義爲含有很多相同的字段。舉個例子,假設你運行着一個博客平臺,並且在同一個索引中存儲了你的所有的數據。在這個索引中,你可以定義一個類型爲用戶數據,定義另外的一個類型爲博客數據,另外的一個類型爲評論數據。

文檔

文檔是可以被索引的信息的基本單元。舉個例子,你可以有一個文檔保存了一個用戶數據,另外一個文檔保存了保存了一條產品信息,另外的一條文檔保存了一條訂單信息。文檔被解釋爲 json,這是一種通用的互聯網數據交換格式。
在一個索引或者類型中,你可以保存任意多的文檔數量。注意,儘管一個文檔物理上從屬於一個索引,但是實際上一條文檔必須被分配在索引中的一個類型中。

分片和副本

一個索引可能存儲數量非常大的數據有可能會超過一個節點的硬件限制。比如,一個含有十億條文檔的單獨的索引可能會使用1TB的硬盤存儲空間,這樣的會可能一個單獨的節點裝不下,或者導致查詢速度變得很慢。
爲了解決這樣的問題,Elasticsearch提供了可以將索引細分爲多個分片的能力。當你創建一個分片的時候,你可以簡單的定義分片的數量。每個碎片本身就是一個全功能的,獨立的索引,可以在集羣中的任何節點上運行。

分片重要的原因主要有兩個:

  • 它可以讓你水平分割或者橫向擴展你的數據量;
  • 可以通過分片進行分佈式或者並行操作(可能在多個節點之間),這樣來提高性能或者增加吞吐量。

分片如何分佈式以及文檔數據如何在查詢時候彙集在一個請求中是完全由Elasticsearch完成的,對於用戶來說是透明的。
在網絡或者雲環境中,故障是隨時都有可能發生的,因此在分片不論什麼原因宕機的情況下,故障轉移機制是非常有用而且被提倡的。爲此,Elasticsearch允許你將索引分片複製到一個叫做複製分片中,或者簡稱爲副本。

複製分片有兩個主要的原因很重要:

  • 提供了高可用性以防分片或者節點掛掉。出於這樣的原因,複製分片不應當分配在跟主分片在同一個節點上。
  • 擴大了搜索量,因爲搜索操作可以在分片上你並行運行。

總結來說,每一個索引可以被切分成多個分片,一個索引也可以被複制0次或者多次。一旦複製,每個索引就會有一個主要分片和複製分片。主要分片和複製分片的數量可以在索引創建的時候被指定,之後只可以更改複製分片的數量而不可以更改主要分片的數量。
默認,elasticsearch分配每個索引5個主要分片,和1個複製分片,這就意味着你必須要有兩個節點在你的集羣中,你的索引將會有5個主要分片,5個複製分片,總共10個分片。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章