elasticsearch學(xué)習(xí)記錄

1枉侧、elasticsearch和傳統(tǒng)關(guān)系型數(shù)據(jù)庫的對(duì)比:

1.索引(Index)

索引包含一堆有相似結(jié)構(gòu)的文檔數(shù)據(jù),比如可以有一個(gè)客戶索引狂芋,商品分類索引榨馁,訂單索引,索引有一個(gè)名稱帜矾。一個(gè)index包含很多document翼虫,一個(gè)index就代表了一類類似的或者相同的document屑柔。比如說建立一個(gè)product index,商品索引蛙讥,里面可能就存放了所有的商品數(shù)據(jù)锯蛀,所有的商品document。

2.類型(Type)

每個(gè)索引里都可以有一個(gè)或多個(gè)type次慢,type是index中的一個(gè)邏輯數(shù)據(jù)分類旁涤,一個(gè)type下的document,都有相同的field迫像,比如博客系統(tǒng)劈愚,有一個(gè)索引,可以定義用戶數(shù)據(jù)type闻妓,博客數(shù)據(jù)type菌羽,評(píng)論數(shù)據(jù)type。

3.文檔(document)

文檔是es中的最小數(shù)據(jù)單元由缆,一個(gè)document可以是一條客戶數(shù)據(jù)注祖,一條商品分類數(shù)據(jù),一條訂單數(shù)據(jù)均唉,通常用JSON數(shù)據(jù)結(jié)構(gòu)表示是晨,每個(gè)index下的type中,都可以去存儲(chǔ)多個(gè)document舔箭。

4.字段(Field)

文檔內(nèi)的一個(gè)基本單位,鍵值對(duì)形式(book_name : “l(fā)earning elk”)罩缴。Field是Elasticsearch的最小單位。一個(gè)document里面有多個(gè)field层扶,每個(gè)field就是一個(gè)數(shù)據(jù)字段箫章。

eg:?商品index,里面存放了所有的商品數(shù)據(jù)镜会,商品document

但是商品分很多種類檬寂,每個(gè)種類的document的field可能不太一樣,比如說電器商品戳表,可能還包含一些諸如售后時(shí)間范圍這樣的特殊field焰薄;生鮮商品,還包含一些諸如生鮮保質(zhì)期之類的特殊field

type:日化商品type扒袖,電器商品type,生鮮商品type

2亩码、elasticsearch的分布式高可用集群

1.分片(Shard)

分片是實(shí)際的物理實(shí)體用于存儲(chǔ)每個(gè)索引的數(shù)據(jù)季率。每個(gè)索引都可以有大量的主和復(fù)制分片。分片分布在集群中的所有節(jié)點(diǎn)中描沟,可以在節(jié)點(diǎn)故障或新節(jié)點(diǎn)添加時(shí)從一個(gè)節(jié)點(diǎn)移動(dòng)到另一個(gè)節(jié)點(diǎn)飒泻。

2.主分片(Primary shard)與備份分片(replica shard)

備份分片通常駐留在一個(gè)不同的節(jié)點(diǎn)上鞭光,而不是主碎片,在故障轉(zhuǎn)移和負(fù)載平衡的情況下泞遗,可以滿足多個(gè)請(qǐng)求惰许。

3.集群(Cluster)

集群是存儲(chǔ)索引數(shù)據(jù)的節(jié)點(diǎn)集合。elasticsearch提供了水平的可伸縮性用以存儲(chǔ)集群中的數(shù)據(jù)史辙。每個(gè)集群都由一個(gè)集群名稱來表示汹买,不同的節(jié)點(diǎn)指明集群名稱連接在一起。集群名稱在elasticsearch.yml中的cluster.name的屬性設(shè)置聊倔,它默認(rèn)為“elasticsearch”:

4.節(jié)點(diǎn)(Node)

節(jié)點(diǎn)是一個(gè)單獨(dú)運(yùn)行的elasticsearch實(shí)例晦毙,它屬于一個(gè)集群。默認(rèn)情況下耙蔑,elasticsearch中的每個(gè)節(jié)點(diǎn)都加入名為“elasticsearch”的集群见妒。每個(gè)節(jié)點(diǎn)都可以在elasticsearch中使用自己的elasticsearch.yml,它們可以對(duì)內(nèi)存和資源分配有不同的設(shè)置甸陌。

master節(jié)點(diǎn):整個(gè)集群的大腦(管理者),現(xiàn)役會(huì)經(jīng)過選舉(Bully算法)须揣。出現(xiàn)最終選舉結(jié)構(gòu)形成一個(gè)領(lǐng)導(dǎo)整個(gè)集群的master.維護(hù)集群中所有數(shù)據(jù)的元數(shù)據(jù)信息(分片大小,從分片的個(gè)數(shù),主分片從分片對(duì)應(yīng)的存儲(chǔ)節(jié)點(diǎn)信息,分片對(duì)應(yīng)的索引文件等等)

data node:負(fù)責(zé)讀寫數(shù)據(jù),管理數(shù)據(jù)分片

協(xié)調(diào)器:創(chuàng)建和運(yùn)行的集群中,實(shí)現(xiàn)各種集群狀態(tài)的同步工作,只要保證高可用就可以,不需要大量協(xié)調(diào)器存在

在一個(gè)搜索里存儲(chǔ)的數(shù)據(jù),潛在的情況下可能會(huì)超過單個(gè)節(jié)點(diǎn)的硬件的存儲(chǔ)限制钱豁,為了解決這個(gè)問題耻卡,elasticsearch便提供了分片的功能,它可以將索引劃分為多個(gè)分片寥院,當(dāng)你創(chuàng)建一個(gè)索引的時(shí)候劲赠,你就可以簡單的定義你想要的分片的數(shù)量,每一個(gè)分片本身是一個(gè)全功能的完全獨(dú)立的索引秸谢,可以部署到集群中的任何一個(gè)節(jié)點(diǎn)凛澎。分片的兩個(gè)重要原因:

(1)它允許你水平切分你的內(nèi)容卷

(2)它允許通過分片來分布合并執(zhí)行操作來應(yīng)對(duì)日益增長的執(zhí)行量

復(fù)制(replica):在一個(gè)網(wǎng)絡(luò)情況下,故障可能會(huì)隨時(shí)發(fā)生估蹄,有一個(gè)故障恢復(fù)機(jī)制是必須的塑煎,為了達(dá)到這個(gè)目的,ES允許你制作一個(gè)或多個(gè)拷貝放入一個(gè)叫做復(fù)制分片或短暫的復(fù)制品中臭蚁。復(fù)制對(duì)于以下兩個(gè)主要原因很重要

(1)高可用最铁。它提供了高可用的以來防止分片或者節(jié)點(diǎn)宕機(jī),為此垮兑,一個(gè)非常重要的注意點(diǎn)就是絕對(duì)不要講一個(gè)分片的拷貝放在跟這個(gè)分片相同的機(jī)器上冷尉。

(2)高并發(fā)。它允許你的分片可以提供超出自身吞吐量的搜索服務(wù)系枪,搜索行為可以在分片所有的拷貝中并行執(zhí)行雀哨。

總之,一個(gè)完整的流程就是,ES客戶端將一份數(shù)據(jù)寫入primary shard,它會(huì)將數(shù)據(jù)分成成對(duì)的shard分片雾棺,并將數(shù)據(jù)進(jìn)行復(fù)制膊夹,ES客戶端取數(shù)據(jù)的時(shí)候就會(huì)在replica或primary 的shard中去讀。

ES集群有多個(gè)節(jié)點(diǎn)捌浩,會(huì)自動(dòng)選舉一個(gè)節(jié)點(diǎn)為master節(jié)點(diǎn)放刨,這個(gè)master節(jié)點(diǎn)其實(shí)就是干一些管理類的操作,比如維護(hù)元數(shù)據(jù)尸饺,負(fù)責(zé)切換primary shard 和replica shard的身份之類的进统,要是master節(jié)點(diǎn)宕機(jī)了,那么就會(huì)重新選舉下一個(gè)節(jié)點(diǎn)為master為節(jié)點(diǎn)侵佃。

ES的選主機(jī)制:主要根據(jù)以下三個(gè)方面來進(jìn)行ES的選舉:

????1麻昼、對(duì)有資格成為Master的節(jié)點(diǎn)進(jìn)行NodeId排序,每一次選舉都將自己識(shí)別的節(jié)點(diǎn)進(jìn)行排序馋辈,然后選擇第一位的節(jié)點(diǎn)抚芦,暫且認(rèn)為它是主節(jié)點(diǎn)(注意:暫定)

????2、如果某一個(gè)幾點(diǎn)的投票數(shù)達(dá)到了 N/2+1,并且此節(jié)點(diǎn)自己也投給了自己一票迈螟,那么就選舉這個(gè)節(jié)點(diǎn)為主節(jié)點(diǎn)叉抡。否則,重新選舉答毫。

????3褥民、對(duì)于brain split問題,需要把候選master節(jié)點(diǎn)最小值設(shè)置為可以成為master節(jié)點(diǎn)數(shù)n/2+1(quorum )

選主機(jī)制圖解

如果因?yàn)閿嗑W(wǎng)的問題洗搂,將集群分為了兩個(gè)部分消返,那么這兩個(gè)部分只能在自己的圈子里去選擇主節(jié)點(diǎn)。因?yàn)樵拍矗筮叺牟糠种挥袃蓚€(gè)節(jié)點(diǎn) 沒有達(dá)到N/2+1,所以很遺憾撵颊,左邊的部分沒有資格去產(chǎn)生主節(jié)點(diǎn)。所以惫叛,就不會(huì)出現(xiàn)選擇兩個(gè)主節(jié)點(diǎn)的問題倡勇。同理,右邊的部分符合條件嘉涌,則可以選擇主節(jié)點(diǎn)妻熊。

腦裂的產(chǎn)生,是因?yàn)閙aster集群出現(xiàn)的波動(dòng),導(dǎo)致原來的master本來沒有宕機(jī)被判斷宕機(jī),集群出現(xiàn)多個(gè)master管理的情況,導(dǎo)致dataNode同步的元數(shù)據(jù)出現(xiàn)不穩(wěn)定,最終影響數(shù)據(jù)的使用-----es中可以通過過半的master最小有效數(shù)量,防止腦裂的出現(xiàn)

如果是非master宕機(jī)了,那么就會(huì)有master節(jié)點(diǎn)仑最,讓那個(gè)宕機(jī)的節(jié)點(diǎn)上的primary shard的身份轉(zhuǎn)移到replica shard上扔役,如果修復(fù)了宕機(jī)的那臺(tái)機(jī)器,重啟之后警医,master節(jié)點(diǎn)就會(huì)控制將缺失的replica shard 分配過去厅目,同步后續(xù)的修改工作,讓集群恢復(fù)正常。

3.基本分詞器測(cè)試:

WhitespaceAnalyzer:空格分詞器

StandardAnalyzer:標(biāo)準(zhǔn)分詞器(一個(gè)字符分一個(gè)詞項(xiàng))

SimpleAnalyzer:一個(gè)標(biāo)點(diǎn)符號(hào)分一個(gè)詞項(xiàng)(句)

SmartChineseAnalyzer:智能中文分詞器

IKAnalzyer:常用的一個(gè)中文分詞器,支持詞語的擴(kuò)展和停用

分詞結(jié)果輸出

IK分詞器和Smart分詞器的對(duì)比:

i损敷、二者對(duì)于中文的分詞效果相對(duì)其他分詞器,效果都更加深啤,分詞效果都是值得肯定的拗馒。

ii、smartcn分詞器是lucene4.6版本之后自帶的溯街,中文分詞效果不錯(cuò)诱桂,英文分詞有問題,Lucene分詞之后變成了Luncn

iii呈昔、IKAnalyzer分詞之后挥等,碎片太多,可以和人工分析效果最對(duì)比堤尾。

iiii肝劲、從自定義詞庫的角度做對(duì)比,因?yàn)閟martcn是lucene自帶的郭宝,目前不支持自定義詞庫辞槐,成為致命缺陷,因此只能放棄粘室。

4榄檬、常用命令:

查看product索引信息:curl -X GET "localhost:9200/product?pretty=true"

查看es中的全部索引:curl 'http://localhost:9200/_cat/indices?v'

查看索引列表:curl -X GET "http://localhost:9200/_cat/indices?v&h=i&s=i"

添加文檔curl -H "Content-Type: application/json" -XPUT 'http://localhost:9200/product/Snack/1' -d '{"name": "小當(dāng)家方便面"}'

查看索引數(shù)據(jù)(文檔)信息:curl -X GET "localhost:9200/{index}/{type}/_search"

添加索引別名:

刪除索引別名:

修改索引別名:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市衔统,隨后出現(xiàn)的幾起案子鹿榜,更是在濱河造成了極大的恐慌,老刑警劉巖锦爵,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舱殿,死亡現(xiàn)場離奇詭異,居然都是意外死亡棉浸,警方通過查閱死者的電腦和手機(jī)怀薛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來迷郑,“玉大人枝恋,你說我怎么就攤上這事∥撕Γ” “怎么了焚碌?”我有些...
    開封第一講書人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長霸妹。 經(jīng)常有香客問我十电,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任鹃骂,我火速辦了婚禮台盯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畏线。我一直安慰自己静盅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開白布寝殴。 她就那樣靜靜地躺著蒿叠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蚣常。 梳的紋絲不亂的頭發(fā)上市咽,一...
    開封第一講書人閱讀 51,763評(píng)論 1 307
  • 那天,我揣著相機(jī)與錄音抵蚊,去河邊找鬼施绎。 笑死,一個(gè)胖子當(dāng)著我的面吹牛泌射,可吹牛的內(nèi)容都是我干的粘姜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼熔酷,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼孤紧!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拒秘,我...
    開封第一講書人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤号显,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后躺酒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體押蚤,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年羹应,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了揽碘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡园匹,死狀恐怖雳刺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情裸违,我是刑警寧澤掖桦,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站供汛,受9級(jí)特大地震影響枪汪,放射性物質(zhì)發(fā)生泄漏涌穆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一雀久、第九天 我趴在偏房一處隱蔽的房頂上張望宿稀。 院中可真熱鬧,春花似錦岸啡、人聲如沸原叮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至擂送,卻和暖如春悦荒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嘹吨。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來泰國打工搬味, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蟀拷。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓碰纬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親问芬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子悦析,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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