Java最新突擊面試筆記總結(jié)—ElasticSearch面試內(nèi)容

搜索引擎面試題

題目和解答來自于中華石杉和自己整理總結(jié)而得堪置,希望能夠有所幫助。
搜索引擎主要考察ElasticSearch 以及對應(yīng)底層的Lucene技術(shù)宏胯。
主要面試題集中于:

  1. es分布式架構(gòu)原理
  2. es的插入與查詢
  3. es在數(shù)據(jù)量很大的情況下如何提高性能
  4. es在生產(chǎn)集群的部署架構(gòu)是什么供置,每個索引有多大的數(shù)據(jù)量进鸠,每個索引有多少分片

1. es分布式架構(gòu)原理

首先需要明白es是如何存儲數(shù)據(jù)的媳握,es把對應(yīng)的數(shù)據(jù)轉(zhuǎn)換為index碱屁。基于倒排索引的方式蛾找,每個index上存儲了多個type類型娩脾,每個type對應(yīng)一個document。而一個index會被分成多個shard(默認(rèn)是5個)打毛。
在分布式部署時柿赊,每個shard會被復(fù)制,即一個shard有primary和replica 每個es進(jìn)程存儲的是不同shard的primary和replica幻枉。es集群多個節(jié)點碰声,會自動選舉一個節(jié)點為master節(jié)點,這個master節(jié)點其實就是干一些管理的工作的熬甫,比如維護(hù)索引元數(shù)據(jù)拉胰挑,負(fù)責(zé)切換primary shard和replica shard身份拉,之類的椿肩。


3cWgYV.png

2. es的數(shù)據(jù)寫入與讀取

2.1 es數(shù)據(jù)的寫入

2.1.1 es數(shù)據(jù)的寫入過程

注意瞻颂,客戶端是可以在任意節(jié)點進(jìn)行寫入數(shù)據(jù)的,與Kakfa不同郑象。
1)客戶端選擇一個node發(fā)送請求過去贡这,這個node就是coordinating node(協(xié)調(diào)節(jié)點)
2)coordinating node,對document進(jìn)行路由得到對應(yīng)應(yīng)該存儲到哪個shard厂榛,將請求轉(zhuǎn)發(fā)給對應(yīng)的node(有primary shard)
3)實際的node上的primary shard處理請求藕坯,然后將數(shù)據(jù)同步到replica node
4)coordinating node,如果發(fā)現(xiàn)primary node和所有replica node都搞定之后噪沙,就返回響應(yīng)結(jié)果給客戶端


3cWXlD.png

2.1.2 es數(shù)據(jù)的寫入原理

es數(shù)據(jù)寫入原理主要可以分為4個操作:

  1. refresh
  2. commit
  3. flush
  4. merge
操作觸發(fā)條件 操作過程
refresh 1. 每隔1s進(jìn)行一次refresh操作
2. buffer已滿,則進(jìn)行一次refresh操作
1. buffer將數(shù)據(jù)寫入segment file
2. 清空buffer
commit 1. 每隔30分鐘執(zhí)行一次translog
2. translog日志已滿
1. 會主動進(jìn)行一次refresh操作吐根,把buffer中的數(shù)據(jù)寫入到segment file
2. 生成一個 commit point 文件標(biāo)識此次操作一件把buffer數(shù)據(jù)執(zhí)行到了哪一個segment文件
3. 執(zhí)行flush操作
flush commit操作中 1. 把file system上的文件全部強制fsync(持久化)到磁盤
2. 清空translog文件
3. 生成一個新的translog文件
merge 后臺檢查 1. 將多個segment文件合并為一個文件正歼,并把.del文件刪除
2. commit log 更新標(biāo)識目前的segment
3. 打開segmentfile 到file cache 以供快速搜索
4. 刪除舊的segment file
3chLse.png

2.2 es數(shù)據(jù)的讀取

2.2.1 讀取數(shù)據(jù)

使用RestFul API向?qū)?yīng)的node發(fā)送查詢請求,根據(jù)did來判斷在哪個shard上拷橘,返回的是primary和replica的node節(jié)點集合
這樣會負(fù)載均衡地把查詢發(fā)送到對應(yīng)節(jié)點局义,之后對應(yīng)節(jié)點接收到請求,將document數(shù)據(jù)返回協(xié)調(diào)節(jié)點冗疮,協(xié)調(diào)節(jié)點把document返回給客戶端


3cI6RP.png

2.2.2 全文檢索

(1) 客戶端使用RestFul API向?qū)?yīng)的node發(fā)送查詢請求
(2)協(xié)調(diào)節(jié)點將請求轉(zhuǎn)發(fā)到所有節(jié)點(primary或者replica)所有節(jié)點將對應(yīng)的數(shù)據(jù)查詢之后返回對應(yīng)的doc id 返回給協(xié)調(diào)節(jié)點
(3)協(xié)調(diào)節(jié)點將doc進(jìn)行排序聚合
(4) 協(xié)調(diào)節(jié)點再根據(jù)doc id 把查詢請求發(fā)送到對應(yīng)shard的node萄唇,返回document

3 es在數(shù)據(jù)量很大的情況下如何提高性能

3.1 filesystem

es每次走fileSystem cache查詢速度是最快的
所以將每個查詢的數(shù)據(jù)50% 容量
= fileSystem cache 容量。

3.2 數(shù)據(jù)預(yù)熱

數(shù)據(jù)預(yù)熱是指术幔,每隔一段時間另萤,將熱數(shù)據(jù)
手動在后臺查詢一遍,將熱數(shù)據(jù)刷新到fileSystem cache上

3.3 冷熱分離

類似于MySQL的分表分庫
將熱數(shù)據(jù)單獨建立一個索引 分配3臺機(jī)器只保持熱機(jī)器的索引
另外的機(jī)器保持冷數(shù)據(jù)的索引,但有一個問題四敞,就是事先必須知道哪些是熱數(shù)據(jù) 哪些是冷數(shù)據(jù)

3.4. document設(shè)計

在使用es時 避免使用復(fù)雜的查詢語句(Join 泛源、聚合),就是在建立索引時忿危,
就根據(jù)查詢語句建立好對應(yīng)的元數(shù)據(jù)达箍。

3.5 實際設(shè)計

采用elasticSearch + Hbase的架構(gòu)方式。es中只存放少量關(guān)鍵數(shù)據(jù)建立索引铺厨,通過es查詢到doc id 再去Hbase中查詢完整的數(shù)據(jù)信息缎玫。

4 es在生產(chǎn)集群的部署架構(gòu)是什么,每個索引有多大的數(shù)據(jù)量解滓,每個索引有多少分片

生產(chǎn)環(huán)境部署情況
(1)es生產(chǎn)集群我們部署了5臺機(jī)器赃磨,每臺機(jī)器是6核64G的,集群總內(nèi)存是320G
(2)我們es集群的日增量數(shù)據(jù)大概是2000萬條伐蒂,每天日增量數(shù)據(jù)大概是500MB煞躬,
每月增量數(shù)據(jù)大概是6億,15G逸邦。目前系統(tǒng)已經(jīng)運行了幾個月恩沛,現(xiàn)在es集群里數(shù)據(jù)總量大概是100G左右。
(3)目前線上有5個索引(這個結(jié)合你們自己業(yè)務(wù)來缕减,看看自己有哪些數(shù)據(jù)可以放es的)雷客,
每個索引的數(shù)據(jù)量大概是20G,所以這個數(shù)據(jù)量之內(nèi)桥狡,我們每個索引分配的是8個shard搅裙,比默認(rèn)的5個shard多了3個shard。

更多原創(chuàng)內(nèi)容歡迎關(guān)注:
公眾號:木對林三的成長
v?:lh18708107810

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裹芝,一起剝皮案震驚了整個濱河市部逮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嫂易,老刑警劉巖兄朋,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異怜械,居然都是意外死亡颅和,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門缕允,熙熙樓的掌柜王于貴愁眉苦臉地迎上來峡扩,“玉大人,你說我怎么就攤上這事障本〗探欤” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長巍佑。 經(jīng)常有香客問我茴迁,道長,這世上最難降的妖魔是什么萤衰? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任堕义,我火速辦了婚禮,結(jié)果婚禮上脆栋,老公的妹妹穿的比我還像新娘倦卖。我一直安慰自己,他們只是感情好椿争,可當(dāng)我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布怕膛。 她就那樣靜靜地躺著,像睡著了一般秦踪。 火紅的嫁衣襯著肌膚如雪褐捻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天椅邓,我揣著相機(jī)與錄音柠逞,去河邊找鬼。 笑死景馁,一個胖子當(dāng)著我的面吹牛板壮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播合住,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼绰精,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了透葛?” 一聲冷哼從身側(cè)響起狮辽,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤施无,失蹤者是張志新(化名)和其女友劉穎眠饮,沒想到半個月后淹禾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡贡珊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涉馁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片门岔。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖烤送,靈堂內(nèi)的尸體忽然破棺而出寒随,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布妻往,位于F島的核電站互艾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏讯泣。R本人自食惡果不足惜纫普,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望好渠。 院中可真熱鬧昨稼,春花似錦、人聲如沸拳锚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霍掺。三九已至匾荆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杆烁,已是汗流浹背牙丽。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留连躏,地道東北人剩岳。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像入热,于是被迫代替她去往敵國和親拍棕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,762評論 2 345

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