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

1_BmvPfSSm2G8C-khX1rhCGg.png

ElasticSearch介紹

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

具有以下特點:

  • 分布式的實時文件存儲,每個字段都被索引并可被搜索
  • 分布式的實時分析搜索引擎
  • 可以擴展到上百臺服務(wù)器蚯撩,處理PB級結(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)建高可用和可擴展的系統(tǒng)础倍。擴展的方式可以是購買更好的服務(wù)器(縱向擴展(vertical scale or scaling up))或者購買更多的服務(wù)(橫向擴展(horizontal scale or scaling out))。Elasticsearch雖然能從更強大的硬件中獲得更好的性能胎挎,但是縱向擴展有它的局限性沟启。真正的擴展應(yīng)該是橫向的,它通過增加節(jié)點來均攤負載和增加可靠性呀癣。對于大多數(shù)數(shù)據(jù)庫而言美浦,橫向擴展意味著你的程序?qū)⒆龇浅4蟮母膭硬拍芾眠@些新添加的設(shè)備弦赖。對比來說项栏,Elasticsearch天生就是分布式的:它知道如何管理節(jié)點來提供高擴展和高可用。這意味著你的程序不需要關(guān)心這些蹬竖。

Elasticsearch 生活運用場景

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

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

生活中運用的手機APP用戶發(fā)布信息的快速搜索以及存儲,并且運營商可以根據(jù)存儲的數(shù)據(jù)進行大數(shù)據(jù)分析段誊,和個性推薦機制等場景闰蚕。

如下圖是推特的使用場景圖:


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

Elasticsearch基本概念

Near Realtime(NRT) 幾乎實時:
Elasticsearch是一個幾乎實時的搜索平臺。意思是连舍,從索引一個文檔到這個文檔可被搜索只需要一點點的延遲陪腌,這個時間一般為毫秒級。

Cluster 集群:
群集是一個或多個節(jié)點(服務(wù)器)的集合烟瞧, 這些節(jié)點共同保存整個數(shù)據(jù)诗鸭,并在所有節(jié)點上提供聯(lián)合索引和搜索功能。一個集群由一個唯一集群ID確定参滴,并指定一個集群名(默認為“elasticsearch”)强岸。該集群名非常重要,因為節(jié)點可以通過這個集群名加入群集砾赔,一個節(jié)點只能是群集的一部分蝌箍。

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

Node節(jié)點:
節(jié)點是單個服務(wù)器實例筋粗,它是群集的一部分,可以存儲數(shù)據(jù)炸渡,并參與群集的索引和搜索功能娜亿。就像一個集群,節(jié)點的名稱默認為一個隨機的通用唯一標識符(UUID)蚌堵,確定在啟動時分配給該節(jié)點买决。如果不希望默認,可以定義任何節(jié)點名吼畏。這個名字對管理很重要督赤,目的是要確定你的網(wǎng)絡(luò)服務(wù)器對應(yīng)于你的ElasticSearch群集節(jié)點。

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

在單個群集中枯冈,您可以擁有盡可能多的節(jié)點。此外办悟,如果“elasticsearch”在同一個網(wǎng)絡(luò)中尘奏,沒有其他節(jié)點正在運行,從單個節(jié)點的默認情況下會形成一個新的單節(jié)點名為"elasticsearch"的集群病蛉。

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

Type類型:
在索引中析恋,可以定義一個或多個類型良哲。類型是索引的邏輯類別/分區(qū),其語義完全取決于您助隧。一般來說筑凫,類型定義為具有公共字段集的文檔。例如喇颁,假設(shè)你運行一個博客平臺漏健,并將所有數(shù)據(jù)存儲在一個索引中。在這個索引中橘霎,您可以為用戶數(shù)據(jù)定義一種類型,為博客數(shù)據(jù)定義另一種類型殖属,以及為注釋數(shù)據(jù)定義另一類型姐叁。

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

在索引/類型中玄组,您可以存儲盡可能多的文檔滔驾。請注意谒麦,盡管文檔物理駐留在索引中,文檔實際上必須索引或分配到索引中的類型哆致。

Shards & Replicas分片與副本:

索引可以存儲大量的數(shù)據(jù)绕德,這些數(shù)據(jù)可能超過單個節(jié)點的硬件限制。例如摊阀,十億個文件占用磁盤空間1TB的單指標可能不適合對單個節(jié)點的磁盤或可能太慢服務(wù)僅從單個節(jié)點的搜索請求耻蛇。

為了解決這一問題,Elasticsearch提供細分你的指標分成多個塊稱為分片的能力胞此。當你創(chuàng)建一個索引臣咖,你可以簡單地定義你想要的分片數(shù)量。每個分片本身是一個全功能的漱牵、獨立的“指數(shù)”亡哄,可以托管在集群中的任何節(jié)點。

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

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

在同一個集群網(wǎng)絡(luò)或云環(huán)境上,故障是任何時候都會出現(xiàn)的灵临,擁有一個故障轉(zhuǎn)移機制以防分片和結(jié)點因為某些原因離線或消失是非常有用的截型,并且被強烈推薦。為此儒溉,Elasticsearch允許你創(chuàng)建一個或多個拷貝宦焦,你的索引分片進入所謂的副本或稱作復制品的分片,簡稱Replicas顿涣。

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

副本為分片或節(jié)點失敗提供了高可用性波闹。為此,需要注意的是涛碑,一個副本的分片不會分配在同一個節(jié)點作為原始的或主分片精堕,副本是從主分片那里復制過來的。
副本允許用戶擴展你的搜索量或吞吐量蒲障,因為搜索可以在所有副本上并行執(zhí)行歹篓。

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

ElasticSearch和關(guān)系型數(shù)據(jù)庫相關(guān)概念的對應(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)容合作請聯(lián)系作者
  • 序言:七十年代末毙籽,一起剝皮案震驚了整個濱河市洞斯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌坑赡,老刑警劉巖烙如,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件么抗,死亡現(xiàn)場離奇詭異,居然都是意外死亡厅翔,警方通過查閱死者的電腦和手機乖坠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刀闷,“玉大人熊泵,你說我怎么就攤上這事〉榛瑁” “怎么了顽分?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長施蜜。 經(jīng)常有香客問我卒蘸,道長,這世上最難降的妖魔是什么翻默? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任缸沃,我火速辦了婚禮,結(jié)果婚禮上修械,老公的妹妹穿的比我還像新娘趾牧。我一直安慰自己,他們只是感情好肯污,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布翘单。 她就那樣靜靜地躺著,像睡著了一般蹦渣。 火紅的嫁衣襯著肌膚如雪哄芜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天柬唯,我揣著相機與錄音认臊,去河邊找鬼。 笑死权逗,一個胖子當著我的面吹牛美尸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斟薇,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼恕酸!你這毒婦竟也來了堪滨?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蕊温,失蹤者是張志新(化名)和其女友劉穎袱箱,沒想到半個月后遏乔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡发笔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年盟萨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片了讨。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡捻激,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出前计,到底是詐尸還是另有隱情胞谭,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布男杈,位于F島的核電站丈屹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伶棒。R本人自食惡果不足惜旺垒,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肤无。 院中可真熱鬧先蒋,春花似錦、人聲如沸舅锄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽皇忿。三九已至畴蹭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間鳍烁,已是汗流浹背叨襟。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留幔荒,地道東北人糊闽。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像爹梁,于是被迫代替她去往敵國和親右犹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

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