1. 程式人生 > >elasticsearch:第一章 搜尋引擎簡介

elasticsearch:第一章 搜尋引擎簡介

一、簡介

Elasticsearch 是一個開源的搜尋引擎,建立在全文搜尋引擎庫 Apache Lucene 基礎之上

用 Java 編寫的,它的內部使用 Lucene 做索引與搜尋,但是它的目的是使全文檢索變得簡單, 通過隱藏 Lucene 的複雜性,取而代之的提供一套簡單一致的 RESTful API

Elasticsearch 不僅僅只是一個全文搜尋引擎。

它可以被下面這樣準確的形容:

一個分散式的實時文件儲存,每個欄位可以被索引與搜尋——作資料庫用

一個分散式實時分析搜尋引擎 

能勝任上百個服務節點的擴充套件,並支援 TB 級別的結構化或者非結構化資料

二、ES的誕生

三、ES的應用

Elasticsearch 後來作為一家公司(Elastic公司)進行運作,定位為資料搜尋和分析平臺。

ES現在可以與Java、Ruby、Python、PHP、Perl、.NET等多種客戶端整合。也可與Hadoop、Spark等大資料分析平臺進行整合,功能十分強大。

基於Elasticsearch衍生出了一系列開源軟體,統稱為 Elatic Stack

四、ES的核心概念

1.Near Realtime
接近實時的查詢,通常情況下,延遲在1s以內

2.Cluster
一個叢集由1個或者多個節點組成,這些節點提供整個資料和索引,效能來源於每個節點。一個叢集有一個唯一的名字,預設為“elasticsearch”,

3.Node
一個node啟動的時候分配一個唯一的id(UUID),自動會加入名為“elasticsearch”的cluster,前提是網路沒有問題,一個node只能加入一個叢集。

4.Index
一個index是一些有相似特徵的documents集合,比如有一個顧客類的index,一個生產類的index,有一個訂單類的index。index必須都是小寫的 

5.Type
一個index可以定義出多個type,一個type是一個邏輯的類別或者分割槽,並且其語義完全取決於自己,一般而言一個type定義了包含多個fields的documents。


6.Document
一個document是可以被索引資訊的基礎單元,儘管一個document在物理上是屬於index的,但事實上,一個document必須被索引或者分配到一個index裡的type。
 
7.Shard & Replicas
一個index可以儲存大量的資料,並且超過單節點的限制。例如,單個index可能含有幾十億個documents,佔據了1TB的磁碟空間,這就可能導致單個node可能沒有這麼大的空間,或者在查詢的時候會很慢。

為了解決這個問題,es給出了shard的概念,將一個index拆分成多個部分。建立的index就可以申明shard的數量,每個shard都是擁有完整和獨立的index。

(1)Sharding的兩個重要點:

1.shard允許你對大量資料做橫向切分

2.shard允許通過多個shards分散式併發的操作,從而提升效能和吞吐量

 
Shard是如何分佈的以及多個它們的documents是如何被合併都由es管理,這些對使用者都是透明的。

關於容錯,es通過replica來解決,replica是index下的shard的副本。

(2)Replicaing的兩個重要點:

1.提供了HA(High available)高可用性。需要提醒的是,replica和shard不應該在同一個node

2.搜尋可以在所有的replica併發處理
 

你可以在建立的時候設定index的shard和replica數量,但是之後,你只能更改replica的數量,而不能更改shard的數量.

Es的預設配置為,5個shards和1個replica,如果你的cluster有兩個及以上的node,則一共有10個shards(5 primary shards,5 replica shards)
邏輯上,index、type、documents作為namespace的存在,可以充分表現Restful風格的介面

物理上,index可以看做是資料庫中的庫,通過shard(類似partition)做HA:(High available)高可用性和高併發。

五、ES和資料庫關係對比

六、ES的優勢

速度快、易擴充套件、彈性、靈活、操作簡單、多語言客戶端、X-Pack、hadoop/spark強強聯手、開箱即用。

分散式:橫向擴充套件非常靈活
全文檢索:基於lucene的強大的全文檢索能力;
近實時搜尋和分析:資料進入ES,可達到近實時搜尋,還可進行聚合分析
高可用:容錯機制,自動發現新的或失敗的節點,重組和重新平衡資料
模式自由:ES的動態mapping機制可以自動檢測資料的結構和型別,建立索引並使資料可搜尋。
RESTful API:JSON + HTTP