ElasticSearch基本介紹(二)

引言


Elasticsearch是什么例嘱?

ElasticSearch是一個(gè)基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎种蝶,基于RESTful web接口台颠。Elasticsearch是用Java開(kāi)發(fā)的,并作為Apache許可條款下的開(kāi)放源碼發(fā)布瓢颅,是當(dāng)前流行的企業(yè)級(jí)搜索引擎。設(shè)計(jì)用于云計(jì)算中,能夠達(dá)到實(shí)時(shí)搜索娘纷,穩(wěn)定,可靠跋炕,快速赖晶,安裝使用方便。

Elasticsearch不僅僅是Lucene和全文搜索引擎辐烂,它還提供:

  • 分布式的搜索引擎和數(shù)據(jù)分析引擎
  • 全文檢索
  • 對(duì)海量數(shù)據(jù)進(jìn)行近實(shí)時(shí)的處理

ElasticSearch的應(yīng)用場(chǎng)景

  • 全文檢索:主要和 Solr 競(jìng)爭(zhēng)遏插,屬于后起之秀。

  • NoSQL JSON文檔數(shù)據(jù)庫(kù):主要搶占 Mongo 的市場(chǎng)纠修,它在讀寫性能上優(yōu)于 Mongo 胳嘲,同時(shí)也支持地理位置查詢,還方便地理位置和文本混合查詢扣草。

  • 監(jiān)控:統(tǒng)計(jì)了牛、日志類時(shí)間序的數(shù)據(jù)存儲(chǔ)和分析颜屠、可視化,這方面是引領(lǐng)者鹰祸。

  • 國(guó)外:Wikipedia(維基百科)使用ES提供全文搜索并高亮關(guān)鍵字甫窟、StackOverflowIT問(wèn)答網(wǎng)站)結(jié)合全文搜索與地理位置查詢、Github使用Elasticsearch檢索1300億行的代碼蛙婴。

  • 國(guó)內(nèi):百度(在云分析粗井、網(wǎng)盟、預(yù)測(cè)街图、文庫(kù)浇衬、錢包、風(fēng)控等業(yè)務(wù)上都應(yīng)用了ES餐济,單集群每天導(dǎo)入30TB+數(shù)據(jù)耘擂,總共每天60TB+)、新浪 絮姆、阿里巴巴梳星、騰訊等公司均有對(duì)ES的使用。

使用比較廣泛的平臺(tái)ELK(ElasticSearch, Logstash, Kibana)滚朵。

幾個(gè)概念


  • 接近實(shí)時(shí)(NRT

Elasticsearch是一個(gè)接近實(shí)時(shí)的搜索平臺(tái)冤灾。這意味著,從索引一個(gè)文檔直到這個(gè)文檔能夠被搜索到有一個(gè)輕微的延遲(通常是1秒)

  • 集群(cluster

一個(gè)集群就是由一個(gè)或多個(gè)節(jié)點(diǎn)組織在一起辕近,它們共同持有整個(gè)的數(shù)據(jù)韵吨,并一起提供索引和搜索功能。一個(gè)集群由一個(gè)唯一的名字標(biāo)識(shí)移宅,這個(gè)名字默認(rèn)就是“elasticsearch”归粉。這個(gè)名字是重要的,因?yàn)橐粋€(gè)節(jié)點(diǎn)只能通過(guò)指定某個(gè)集群的名字漏峰,來(lái)加入這個(gè)集群糠悼。在產(chǎn)品環(huán)境中顯式地設(shè)定這個(gè)名字是一個(gè)好習(xí)慣,但是使用默認(rèn)值來(lái)進(jìn)行測(cè)試/開(kāi)發(fā)也是不錯(cuò)的浅乔。

  • 節(jié)點(diǎn)(node

一個(gè)節(jié)點(diǎn)是你集群中的一個(gè)服務(wù)器倔喂,作為集群的一部分,它存儲(chǔ)你的數(shù)據(jù)靖苇,參與集群的索引和搜索功能席噩。和集群類似,一個(gè)節(jié)點(diǎn)也是由一個(gè)名字來(lái)標(biāo)識(shí)的贤壁,默認(rèn)情況下悼枢,這個(gè)名字是一個(gè)隨機(jī)的漫威漫畫(huà)角色的名字,這個(gè)名字會(huì)在啟動(dòng)的時(shí)候賦予節(jié)點(diǎn)脾拆。這個(gè)名字對(duì)于管理工作來(lái)說(shuō)挺重要的馒索,因?yàn)樵谶@個(gè)管理過(guò)程中莹妒,你會(huì)去確定網(wǎng)絡(luò)中的哪些服務(wù)器對(duì)應(yīng)于Elasticsearch集群中的哪些節(jié)點(diǎn)。

一個(gè)節(jié)點(diǎn)可以通過(guò)配置集群名稱的方式來(lái)加入一個(gè)指定的集群绰上。默認(rèn)情況下旨怠,每個(gè)節(jié)點(diǎn)都會(huì)被安排加入到一個(gè)叫做“elasticsearch”的集群中,這意味著渔期,如果你在你的網(wǎng)絡(luò)中啟動(dòng)了若干個(gè)節(jié)點(diǎn)运吓,并假定它們能夠相互發(fā)現(xiàn)彼此渴邦,它們將會(huì)自動(dòng)地形成并加入到一個(gè)叫做“elasticsearch”的集群中疯趟。

在一個(gè)集群里,只要你想谋梭,可以擁有任意多個(gè)節(jié)點(diǎn)信峻。而且,如果當(dāng)前你的網(wǎng)絡(luò)中沒(méi)有運(yùn)行任何Elasticsearch節(jié)點(diǎn)瓮床,這時(shí)啟動(dòng)一個(gè)節(jié)點(diǎn)盹舞,會(huì)默認(rèn)創(chuàng)建并加入一個(gè)叫做“elasticsearch”的集群。

  • 索引(index

一個(gè)索引就是一個(gè)擁有幾分相似特征的文檔的集合隘庄。比如說(shuō)踢步,你可以有一個(gè)客戶數(shù)據(jù)的索引,另一個(gè)產(chǎn)品目錄的索引丑掺,還有一個(gè)訂單數(shù)據(jù)的索引获印。一個(gè)索引由一個(gè)名字來(lái)標(biāo)識(shí)(必須全部是小寫字母),并且當(dāng)我們要對(duì)對(duì)應(yīng)于這個(gè)索引中的文檔進(jìn)行索引街州、搜索兼丰、更新和刪除的時(shí)候,都要使用到這個(gè)名字唆缴。索引類似于關(guān)系型數(shù)據(jù)庫(kù)中Database的概念鳍征。在一個(gè)集群中,如果你想面徽,可以定義任意多的索引艳丛。

  • 類型(type

在一個(gè)索引中,你可以定義一種或多種類型趟紊。一個(gè)類型是你的索引的一個(gè)邏輯上的分類/分區(qū)质礼,其語(yǔ)義完全由你來(lái)定。通常织阳,會(huì)為具有一組共同字段的文檔定義一個(gè)類型眶蕉。比如說(shuō),我們假設(shè)你運(yùn)營(yíng)一個(gè)博客平臺(tái)并且將你所有的數(shù)據(jù)存儲(chǔ)到一個(gè)索引中唧躲。在這個(gè)索引中造挽,你可以為用戶數(shù)據(jù)定義一個(gè)類型碱璃,為博客數(shù)據(jù)定義另一個(gè)類型,當(dāng)然饭入,也可以為評(píng)論數(shù)據(jù)定義另一個(gè)類型嵌器。類型類似于關(guān)系型數(shù)據(jù)庫(kù)中Table的概念。

  • 文檔(document

一個(gè)文檔是一個(gè)可被索引的基礎(chǔ)信息單元谐丢。比如爽航,你可以擁有某一個(gè)客戶的文檔,某一個(gè)產(chǎn)品的一個(gè)文檔乾忱,當(dāng)然讥珍,也可以擁有某個(gè)訂單的一個(gè)文檔。文檔以JSONJavascript Object Notation)格式來(lái)表示窄瘟,而JSON是一個(gè)到處存在的互聯(lián)網(wǎng)數(shù)據(jù)交互格式衷佃。

在一個(gè)index/type里面,只要你想蹄葱,你可以存儲(chǔ)任意多的文檔氏义。注意,盡管一個(gè)文檔图云,物理上存在于一個(gè)索引之中惯悠,文檔必須被索引/賦予一個(gè)索引的type

文檔類似于關(guān)系型數(shù)據(jù)庫(kù)中Record的概念竣况。實(shí)際上一個(gè)文檔除了用戶定義的數(shù)據(jù)外克婶,還包括_index_type_id字段帕翻。

  • 分片和復(fù)制(shards & replicas

一個(gè)索引可以存儲(chǔ)超出單個(gè)結(jié)點(diǎn)硬件限制的大量數(shù)據(jù)鸠补。比如,一個(gè)具有10億文檔的索引占據(jù)1TB的磁盤空間嘀掸,而任一節(jié)點(diǎn)都沒(méi)有這樣大的磁盤空間紫岩;或者單個(gè)節(jié)點(diǎn)處理搜索請(qǐng)求,響應(yīng)太慢睬塌。

為了解決這個(gè)問(wèn)題泉蝌,Elasticsearch提供了將索引劃分成多份的能力,這些份就叫做分片揩晴。當(dāng)你創(chuàng)建一個(gè)索引的時(shí)候勋陪,你可以指定你想要的分片的數(shù)量。每個(gè)分片本身也是一個(gè)功能完善并且獨(dú)立的“索引”硫兰,這個(gè)“索引”可以被放置到集群中的任何節(jié)點(diǎn)上诅愚。

分片之所以重要,主要有兩方面的原因:

  1. 允許你水平分割/擴(kuò)展你的內(nèi)容容量
  2. 允許你在分片(潛在地劫映,位于多個(gè)節(jié)點(diǎn)上)之上進(jìn)行分布式的违孝、并行的操作刹前,進(jìn)而提高性能/吞吐量

至于一個(gè)分片怎樣分布,它的文檔怎樣聚合回搜索請(qǐng)求雌桑,是完全由Elasticsearch管理的喇喉,對(duì)于作為用戶的你來(lái)說(shuō),這些都是透明的校坑。

在一個(gè)網(wǎng)絡(luò)/云的環(huán)境里拣技,失敗隨時(shí)都可能發(fā)生,在某個(gè)分片/節(jié)點(diǎn)不知怎么的就處于離線狀態(tài)耍目,或者由于任何原因消失了膏斤。這種情況下,有一個(gè)故障轉(zhuǎn)移機(jī)制是非常有用并且是強(qiáng)烈推薦的制妄。為此目的掸绞,Elasticsearch允許你創(chuàng)建分片的一份或多份拷貝泵三,這些拷貝叫做復(fù)制分片耕捞,或者直接叫復(fù)制。復(fù)制之所以重要烫幕,主要有兩方面的原因:

  1. 在分片/節(jié)點(diǎn)失敗的情況下俺抽,提供了高可用性。因?yàn)檫@個(gè)原因较曼,注意到復(fù)制分片從不與原/主要(original/primary)分片置于同一節(jié)點(diǎn)上是非常重要的磷斧。
  2. 擴(kuò)展你的搜索量/吞吐量,因?yàn)樗阉骺梢栽谒械膹?fù)制上并行運(yùn)行

總之捷犹,每個(gè)索引可以被分成多個(gè)分片弛饭。一個(gè)索引也可以被復(fù)制0次(意思是沒(méi)有復(fù)制)或多次。一旦復(fù)制了萍歉,每個(gè)索引就有了主分片(作為復(fù)制源的原來(lái)的分片)和復(fù)制分片(主分片的拷貝)之別侣颂。

分片和復(fù)制的數(shù)量可以在索引創(chuàng)建的時(shí)候指定。在索引創(chuàng)建之后枪孩,你可以在任何時(shí)候動(dòng)態(tài)地改變復(fù)制數(shù)量憔晒,但是不能改變分片的數(shù)量。

默認(rèn)情況下蔑舞,Elasticsearch中的每個(gè)索引被分片5個(gè)主分片和1個(gè)復(fù)制拒担,這意味著,如果你的集群中至少有兩個(gè)節(jié)點(diǎn)攻询,你的索引將會(huì)有5個(gè)主分片和另外5個(gè)復(fù)制分片(1個(gè)完全拷貝)从撼,這樣的話每個(gè)索引總共就有10個(gè)分片。一個(gè)索引的多個(gè)分片可以存放在集群中的一臺(tái)主機(jī)上钧栖,也可以存放在多臺(tái)主機(jī)上低零,這取決于你的集群機(jī)器數(shù)量呆馁。主分片和復(fù)制分片的具體位置是由ES內(nèi)在的策略所決定的。

  • 映射(Mapping

MappingES中的一個(gè)很重要的內(nèi)容毁兆,它類似于傳統(tǒng)關(guān)系型數(shù)據(jù)中tableschema浙滤,用于定義一個(gè)索引(index)的某個(gè)類型(type)的數(shù)據(jù)的結(jié)構(gòu)。

ES中气堕,我們無(wú)需手動(dòng)創(chuàng)建type(相當(dāng)于table)和mapping(相當(dāng)于schema)纺腊。在默認(rèn)配置下,ES可以根據(jù)插入的數(shù)據(jù)自動(dòng)地創(chuàng)建type及其mapping茎芭。

mapping中主要包括字段名揖膜、字段數(shù)據(jù)類型和字段索引類型。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梅桩,一起剝皮案震驚了整個(gè)濱河市壹粟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宿百,老刑警劉巖趁仙,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異垦页,居然都是意外死亡雀费,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門痊焊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盏袄,“玉大人,你說(shuō)我怎么就攤上這事薄啥≡穑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵垄惧,是天一觀的道長(zhǎng)刁愿。 經(jīng)常有香客問(wèn)我,道長(zhǎng)赘艳,這世上最難降的妖魔是什么酌毡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蕾管,結(jié)果婚禮上枷踏,老公的妹妹穿的比我還像新娘。我一直安慰自己掰曾,他們只是感情好旭蠕,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般掏熬。 火紅的嫁衣襯著肌膚如雪佑稠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天旗芬,我揣著相機(jī)與錄音舌胶,去河邊找鬼。 笑死疮丛,一個(gè)胖子當(dāng)著我的面吹牛幔嫂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播誊薄,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼履恩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了呢蔫?” 一聲冷哼從身側(cè)響起切心,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎片吊,沒(méi)想到半個(gè)月后绽昏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡定鸟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年而涉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了著瓶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片联予。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖材原,靈堂內(nèi)的尸體忽然破棺而出沸久,到底是詐尸還是另有隱情,我是刑警寧澤余蟹,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布卷胯,位于F島的核電站,受9級(jí)特大地震影響威酒,放射性物質(zhì)發(fā)生泄漏窑睁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一葵孤、第九天 我趴在偏房一處隱蔽的房頂上張望担钮。 院中可真熱鬧,春花似錦尤仍、人聲如沸箫津。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)苏遥。三九已至饼拍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間田炭,已是汗流浹背师抄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留教硫,地道東北人司澎。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像栋豫,于是被迫代替她去往敵國(guó)和親挤安。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

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