Elasticsearch 是個開源分散式搜尋引擎,它的特點有:分散式,零設定,自動發現,索引自動分片,索引副本機制,restful 風格介面,多資料來源,自動搜尋負載等。
Elasticsearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於 RESTful web 介面。Elasticsearch 是用 Java 開發的,並作為 Apache 許可條款下的開放原始碼釋出,是第二流行的企業搜尋引擎。設計用於雲端計算中,能夠達到實時搜尋,穩定,可靠,快速,安裝使用方便。
elasticsearch 是一個接近實時的搜尋平臺,這意味著,從索引一個檔案直到這個檔案能夠被搜尋到有一個輕微的延遲(通常是 1 秒)。
一個叢集就是由一個或多個節點組織在一起,它們共同持有你整個的資料,並一起提供索引和搜尋功能。其中一個節點為主節點,這個主節點是可以通過選舉產生的,並提供跨節點的聯合索引和搜尋的功能。叢集有一個唯一性標示的名字,預設是 elasticsearch,叢集名字很重要,每個節點是基於叢集名字加入到其叢集中的。因此,確保在不同環境中使用不同的叢集名字。一個叢集可以只有一個節點。強烈建議在設定 elasticsearch 時,設定成叢集模式。
節點就是一臺單一的伺服器,是叢集的一部分,儲存資料並參與叢集的索引和搜尋功能。像叢集一樣,節點也是通過名字來標識,預設是在節點啟動時隨機分配的字元名。當然,你可以自己定義。該名字也很重要,在叢集中用於識別伺服器對應的節點。
節點可以通過指定叢集名字來加入到叢集中。預設情況,每個節點被設定成加入到 elasticsearch叢集。如果啟動了多個節點,假設能自動發現對方,他們將會自動組建一個名為 elasticsearch 的叢集。
所以es叢集由若干節點組成,這些節點在同一個網路內,cluster-name相同。
節點分為:
一個索引就是一個擁有幾分相似特徵的檔案的集合。比如說,你可以有一個客戶資料的索引,另一個產品目錄的索引,還有一個訂單資料的索引。一個索引由一個名字來標識(必須全部是小寫字母的),並且當我們要對對應於這個索引中的檔案進行索引、搜尋、更新和刪除的時候,都要使用到這個名字。在一個叢集中,如果你想,可以定義任意多的索引。索引相當於關係型資料庫的庫。
在一個索引中,你可以定義一種或多種型別。一個型別是你的索引的一個邏輯上的分類/分割區,其語意完全由你來定。通常,會為具有一組共同欄位的檔案定義一個型別。比如說,我們假設你運營一個部落格平臺並且將你所有的資料儲存到一個索引中。在這個索引中,你可以為使用者資料定義一個型別,為部落格資料定義另一個型別,當然,也可以為評論資料定義另一個型別。型別相對於關係型資料庫的表。
一個檔案是一個可被索引的基礎資訊單元。比如,你可以擁有某一個客戶的檔案,某一個產品的一個檔案,當然,也可以擁有某個訂單的一個檔案。檔案以 JSON(Javascript Object Notation)格式來表示,而 JSON 是一個到處存在的網際網路資料互動格式。
在一個 index/type 裡面,只要你想,你可以儲存任意多的檔案。注意,雖然一個檔案在物理上位於一個索引中,實際上一個檔案必須在一個索引內被索引和分配一個型別。檔案相對於關係型資料庫的列。
在實際情況下,索引儲存的資料可能超過單個節點的硬體限制。如一個 10 億檔案需 1TB 空間可能不適合儲存在單個節點的磁碟上,或者從單個節點搜尋請求太慢了。為了解決這個問題,elasticsearch 提供將索引分成多個分片的功能。當在建立索引時,可以定義想要分片的數量。每一個分片就是一個全功能的獨立的索引,可以位於叢集中任何節點上。
分片的兩個最主要原因:
分散式分片的機制和搜尋請求的檔案如何彙總完全是有 elasticsearch 控制的,這些對使用者而言是透明的。
網路問題等等其它問題可以在任何時候不期而至,為了健壯性,強烈建議要有一個故障切換機制,無論何種故障以防止分片或者節點不可用。 為此,elasticsearch 讓我們將索引分片複製一份或多份,稱之為分片副本或副本。
副本也有兩個最主要原因:
總之,每個索引可以被分成多個分片。一個索引也可以被複制 0 次(意思是沒有複製)或多次。一旦複製了,每個索引就有了主分片(作為複製源的原來的分片)和複製分片(主分片的拷貝)之別。分片和副本的數量可以在索引建立的時候指定。在索引建立之後,你可以在任何時候動態地改變副本的數量,但是你事後不能改變分片的數量。
預設情況下,Elasticsearch 中的每個索引被分片 5 個主分片和 1 個副本,這意味著,如果你的叢集中至少有兩個節點,你的索引將會有 5 個主分片和另外 5 個副本分片(1 個完全拷貝),這樣的話每個索引總共就有 10 個分片。
分片總結:
三臺centos7伺服器,一臺為master節點,兩臺從節點。
系統版本:CentOS Linux release 7.4.1708 (Core)
軟體版本:elasticsearch-6.8.0.rpm
Jdk版本:jdk-8u161-linux-x64.tar.gz
通過本地/etc/hosts檔案實現。(也可以不設定,但設定es檔案的節點名稱時填寫對應的IP)
java下載地址:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安裝方式相同。(本次使用rpm安裝)
https://www.elastic.co/cn/downloads/elasticsearch
主要路徑:
注:以上的資料存放路徑為預設,如要修改路徑,需要對路徑授權。如:chown elasticsearch:elasticsearch 儲存路徑
Kibana是ElasticSearch的一個工具,用來分析ES中的資料並以各種圖形介面顯示出來。
可以作為ElasticSearch的一個使用者端,在Kibana中可以很輕鬆的呼叫ES的RESTful介面。
軟體版本:kibana-6.8.0-x86_64
這個是開發者工具。在這個介面可以編寫es的查詢DSL語句,並行起對es的請求