ElasticSearch(一)基礎(chǔ)介紹

1_BmvPfSSm2G8C-khX1rhCGg.png

ElasticSearch介紹

Elasticsearch(ES) 是一個(gè)基于Lucene構(gòu)建的開源、分布式、RESTful接口的全文搜索引擎。Elasticsearch還是一個(gè)分布式文檔數(shù)據(jù)庫 ,可以在極短的時(shí)間內(nèi)存儲(chǔ)、搜索和分析大量的數(shù)據(jù)。通常作為具有復(fù)雜搜索場(chǎng)景情況下的核心發(fā)動(dòng)機(jī)。

具有以下特點(diǎn):

  • 分布式的實(shí)時(shí)文件存儲(chǔ),每個(gè)字段都被索引并可被搜索
  • 分布式的實(shí)時(shí)分析搜索引擎
  • 可以擴(kuò)展到上百臺(tái)服務(wù)器,處理PB級(jí)結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)

Elasticsearch(ES)集群架構(gòu)圖如下圖所示:


kisspng-elasticsearch-computer-cluster-node-relativity-tec-relativity-5b3e5bb51abf47.6045839215308133651096.jpg

Elasticsearch用于構(gòu)建高可用和可擴(kuò)展的系統(tǒng)。擴(kuò)展的方式可以是購(gòu)買更好的服務(wù)器(縱向擴(kuò)展(vertical scale or scaling up))或者購(gòu)買更多的服務(wù)(橫向擴(kuò)展(horizontal scale or scaling out))。Elasticsearch雖然能從更強(qiáng)大的硬件中獲得更好的性能,但是縱向擴(kuò)展有它的局限性。真正的擴(kuò)展應(yīng)該是橫向的,它通過增加節(jié)點(diǎn)來均攤負(fù)載和增加可靠性。對(duì)于大多數(shù)數(shù)據(jù)庫而言,橫向擴(kuò)展意味著你的程序?qū)⒆龇浅4蟮母膭?dòng)才能利用這些新添加的設(shè)備。對(duì)比來說,Elasticsearch天生就是分布式的:它知道如何管理節(jié)點(diǎn)來提供高擴(kuò)展和高可用。這意味著你的程序不需要關(guān)心這些。

Elasticsearch 生活運(yùn)用場(chǎng)景

當(dāng)你經(jīng)營(yíng)一家網(wǎng)上商店,你可以讓你的客戶搜索你賣的商品。在這種情況下,你可以使用ElasticSearch來存儲(chǔ)你的整個(gè)產(chǎn)品目錄和庫存信息,為客戶提供精準(zhǔn)搜索,可以為客戶推薦相關(guān)商品。

當(dāng)你想收集日志或者交易數(shù)據(jù)的時(shí)候,需要分析和挖掘這些數(shù)據(jù),尋找趨勢(shì),進(jìn)行統(tǒng)計(jì),總結(jié),或發(fā)現(xiàn)異常。在這種情況下,你可以使用Logstash或者其他工具來進(jìn)行收集數(shù)據(jù),當(dāng)這引起數(shù)據(jù)存儲(chǔ)到ElasticsSearch中。你可以搜索和匯總這些數(shù)據(jù),找到任何你感興趣的信息。

生活中運(yùn)用的手機(jī)APP用戶發(fā)布信息的快速搜索以及存儲(chǔ),并且運(yùn)營(yíng)商可以根據(jù)存儲(chǔ)的數(shù)據(jù)進(jìn)行大數(shù)據(jù)分析,和個(gè)性推薦機(jī)制等場(chǎng)景。

如下圖是推特的使用場(chǎng)景圖:


kisspng-diagram-elasticsearch-architecture-kibana-github-5b804d3aab7978.3267572115351350347024.jpg

Elasticsearch基本概念

Near Realtime(NRT) 幾乎實(shí)時(shí):
Elasticsearch是一個(gè)幾乎實(shí)時(shí)的搜索平臺(tái)。意思是,從索引一個(gè)文檔到這個(gè)文檔可被搜索只需要一點(diǎn)點(diǎn)的延遲,這個(gè)時(shí)間一般為毫秒級(jí)。

Cluster 集群:
群集是一個(gè)或多個(gè)節(jié)點(diǎn)(服務(wù)器)的集合, 這些節(jié)點(diǎn)共同保存整個(gè)數(shù)據(jù),并在所有節(jié)點(diǎn)上提供聯(lián)合索引和搜索功能。一個(gè)集群由一個(gè)唯一集群ID確定,并指定一個(gè)集群名(默認(rèn)為“elasticsearch”)。該集群名非常重要,因?yàn)楣?jié)點(diǎn)可以通過這個(gè)集群名加入群集,一個(gè)節(jié)點(diǎn)只能是群集的一部分

確保在不同的環(huán)境中不要使用相同的群集名稱,否則可能會(huì)導(dǎo)致連接錯(cuò)誤的群集節(jié)點(diǎn)。例如,你可以使用logging-dev、logging-stage、logging-prod分別為開發(fā)、階段產(chǎn)品、生產(chǎn)集群做記錄。

Node節(jié)點(diǎn):
節(jié)點(diǎn)是單個(gè)服務(wù)器實(shí)例,它是群集的一部分,可以存儲(chǔ)數(shù)據(jù),并參與群集的索引和搜索功能。就像一個(gè)集群,節(jié)點(diǎn)的名稱默認(rèn)為一個(gè)隨機(jī)的通用唯一標(biāo)識(shí)符(UUID),確定在啟動(dòng)時(shí)分配給該節(jié)點(diǎn)。如果不希望默認(rèn),可以定義任何節(jié)點(diǎn)名。這個(gè)名字對(duì)管理很重要,目的是要確定你的網(wǎng)絡(luò)服務(wù)器對(duì)應(yīng)于你的ElasticSearch群集節(jié)點(diǎn)。

我們可以通過群集名配置節(jié)點(diǎn)以連接特定的群集。默認(rèn)情況下,每個(gè)節(jié)點(diǎn)設(shè)置加入名為“elasticSearch”的集群。這意味著如果你啟動(dòng)多個(gè)節(jié)點(diǎn)在網(wǎng)絡(luò)上,假設(shè)他們能發(fā)現(xiàn)彼此都會(huì)自動(dòng)形成和加入一個(gè)名為“elasticsearch”的集群。

在單個(gè)群集中,您可以擁有盡可能多的節(jié)點(diǎn)。此外,如果“elasticsearch”在同一個(gè)網(wǎng)絡(luò)中,沒有其他節(jié)點(diǎn)正在運(yùn)行,從單個(gè)節(jié)點(diǎn)的默認(rèn)情況下會(huì)形成一個(gè)新的單節(jié)點(diǎn)名為"elasticsearch"的集群。

Index索引:
索引是具有相似特性的文檔集合。例如,可以為客戶數(shù)據(jù)提供索引,為產(chǎn)品目錄建立另一個(gè)索引,以及為訂單數(shù)據(jù)建立另一個(gè)索引。索引由名稱(必須全部為小寫)標(biāo)識(shí),該名稱用于在對(duì)其中的文檔執(zhí)行索引、搜索、更新和刪除操作時(shí)引用索引。在單個(gè)群集中,您可以定義盡可能多的索引。

Type類型:
在索引中,可以定義一個(gè)或多個(gè)類型。類型是索引的邏輯類別/分區(qū),其語義完全取決于您。一般來說,類型定義為具有公共字段集的文檔。例如,假設(shè)你運(yùn)行一個(gè)博客平臺(tái),并將所有數(shù)據(jù)存儲(chǔ)在一個(gè)索引中。在這個(gè)索引中,您可以為用戶數(shù)據(jù)定義一種類型,為博客數(shù)據(jù)定義另一種類型,以及為注釋數(shù)據(jù)定義另一類型。

Document文檔:
文檔是可以被索引的信息的基本單位。例如,您可以為單個(gè)客戶提供一個(gè)文檔,單個(gè)產(chǎn)品提供另一個(gè)文檔,以及單個(gè)訂單提供另一個(gè)文檔。本文件的表示形式為JSON(JavaScript Object Notation)格式,這是一種非常普遍的互聯(lián)網(wǎng)數(shù)據(jù)交換格式。

在索引/類型中,您可以存儲(chǔ)盡可能多的文檔。請(qǐng)注意,盡管文檔物理駐留在索引中,文檔實(shí)際上必須索引或分配到索引中的類型。

Shards & Replicas分片與副本:

索引可以存儲(chǔ)大量的數(shù)據(jù),這些數(shù)據(jù)可能超過單個(gè)節(jié)點(diǎn)的硬件限制。例如,十億個(gè)文件占用磁盤空間1TB的單指標(biāo)可能不適合對(duì)單個(gè)節(jié)點(diǎn)的磁盤或可能太慢服務(wù)僅從單個(gè)節(jié)點(diǎn)的搜索請(qǐng)求。

為了解決這一問題,Elasticsearch提供細(xì)分你的指標(biāo)分成多個(gè)塊稱為分片的能力。當(dāng)你創(chuàng)建一個(gè)索引,你可以簡(jiǎn)單地定義你想要的分片數(shù)量。每個(gè)分片本身是一個(gè)全功能的、獨(dú)立的“指數(shù)”,可以托管在集群中的任何節(jié)點(diǎn)。

Shards分片的重要性主要體現(xiàn)在以下兩個(gè)特征:

分片允許您水平拆分或縮放內(nèi)容的大小
分片允許你分配和并行操作的碎片(可能在多個(gè)節(jié)點(diǎn)上)從而提高性能/吞吐量
這個(gè)機(jī)制中的碎片是分布式的以及其文件匯總到搜索請(qǐng)求是完全由ElasticSearch管理,對(duì)用戶來說是透明的。

在同一個(gè)集群網(wǎng)絡(luò)或云環(huán)境上,故障是任何時(shí)候都會(huì)出現(xiàn)的,擁有一個(gè)故障轉(zhuǎn)移機(jī)制以防分片和結(jié)點(diǎn)因?yàn)槟承┰螂x線或消失是非常有用的,并且被強(qiáng)烈推薦。為此,Elasticsearch允許你創(chuàng)建一個(gè)或多個(gè)拷貝,你的索引分片進(jìn)入所謂的副本或稱作復(fù)制品的分片,簡(jiǎn)稱Replicas。

Replicas的重要性主要體現(xiàn)在以下兩個(gè)特征:

副本為分片或節(jié)點(diǎn)失敗提供了高可用性。為此,需要注意的是,一個(gè)副本的分片不會(huì)分配在同一個(gè)節(jié)點(diǎn)作為原始的或主分片,副本是從主分片那里復(fù)制過來的。
副本允許用戶擴(kuò)展你的搜索量或吞吐量,因?yàn)樗阉骺梢栽谒懈北旧喜⑿袌?zhí)行。

此分片副本存儲(chǔ)方式和GLUSTER FS 分布式條帶卷存儲(chǔ)方式類似。

ElasticSearch和關(guān)系型數(shù)據(jù)庫相關(guān)概念的對(duì)應(yīng)關(guān)系:

Elasticsearch 關(guān)系型數(shù)據(jù)庫
數(shù)據(jù)庫(Database) 索引(Index),支持全文檢索
表(Table) 類型(Type)
數(shù)據(jù)行(Row) 文檔(Document),但不需要固定結(jié)構(gòu),不同文檔可以具有不同字段集合
數(shù)據(jù)列(Column) 字段(Field)
模式(Schema) 映像(Mapping)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,640評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,957評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,682評(píng)論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,011評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,183評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,435評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,665評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,838評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,251評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,588評(píng)論 1 295
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,379評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,627評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容