Elasticsearch面試題總結

1.為什么要使用Elasticsearch?

? 當我們在商城中使用搜索功能時弟胀,隨著后期項目數(shù)據(jù)量的不斷增大,如果我們繼續(xù)使用以前數(shù)據(jù)庫模糊查詢的方式去查詢數(shù)據(jù)业筏,在百萬數(shù)據(jù)量的情況下到旦,效率非常低下;而Es是一種支持全文檢索的框架舶斧,特點是可以實時存儲和實時分析搜索引擎,并且當我們數(shù)據(jù)量很大的時候可以集群察皇,所以我們使用搜索功能時茴厉,可以把商品常用的名稱,價格什荣,描述矾缓,id等信息存儲到索引庫中,查詢的時候可以提高查詢速度稻爬。


2.elasticsearch 了解多少嗜闻,說說你們公司 es 的集群架構,索引數(shù)據(jù)大小因篇,分片有多少,以及一些調(diào)優(yōu)手段

?es 生產(chǎn)集群我們部署了 2臺機器笔横,每臺機器是 6 核 64G 的竞滓,集群總內(nèi)存是 128G。

我們 es 集群的日增量數(shù)據(jù)大概是 1000 萬條吹缔,每天日增量數(shù)據(jù)大概是 200MB商佑,每月增量數(shù)據(jù)大概是 3 億,8G厢塘。

目前線上有 5個索引茶没,每個索引的數(shù)據(jù)量大概是 10G肌幽,所以這個數(shù)據(jù)量之內(nèi),我們每個索引使用的是默認的5個shard(分片)抓半。


調(diào)優(yōu)手段一般是從三個方面去考慮的:

1.在設計階段的時候 使用別名進行索引管理喂急,每天凌晨定時對索引進行force_merge操作,針對合理的字段設置分詞器

2.在寫入的前笛求,副本數(shù)設置為0并且禁用刷新機制廊移,寫入過程中,采用bulk批量寫入;寫入后恢復副本數(shù)和刷新間隔探入。

3狡孔,在查詢的時候利用倒排索引機制,盡量使用keyword類型蜂嗽。


3苗膝、elasticsearch 的倒排索引是什么

我們傳統(tǒng)的檢索方式是通過遍歷整篇文章,逐個比對找到對應的關鍵詞位置植旧,而倒排索引是通過分詞策略辱揭,形成詞和文章的關系映射表,這種詞典+映射表的方式就是倒排索引隆嗅,有點類似于我們以前使用的新華字典界阁。倒排索引可極大的提高查詢效率。


4.elasticsearch 索引數(shù)據(jù)多了怎么辦胖喳,如何調(diào)優(yōu)泡躯,部署

1.在設計的時候可以基于模板+時間滾動方式創(chuàng)建索引,每天遞增數(shù)據(jù)丽焊,避免單個索引很大的情況出現(xiàn)较剃。

2.在存儲的時候,冷熱數(shù)據(jù)分開存儲,比如最近3天的數(shù)據(jù)作為熱數(shù)據(jù)技健,其他的作為冷數(shù)據(jù)写穴,冷數(shù)據(jù)的話,由于不會再寫入新數(shù)據(jù)了雌贱,可以考慮定期force_merge(強制合并)和shrink(壓縮)的方式進行處理啊送,節(jié)約空間和檢索效率

3.由于es支持動態(tài)擴展,所有可以多加幾臺機器來緩解集群壓力欣孤。


5.elasticsearch 是如何實現(xiàn) master 選舉的

前置條件:

(1)只有候選主節(jié)點(master:true)的節(jié)點才能成為主節(jié)點馋没。

(2)最小主節(jié)點數(shù)(min_master_nodes)的目的是防止腦裂。

實現(xiàn)步驟

第一步:確認候選主節(jié)點數(shù)達標降传,就是我們在Es.yml 設置的值

第二步:比較:先判定是否具備 master 資格篷朵,具備候選主節(jié)點資格的優(yōu)先返回;

若兩節(jié)點都為候選主節(jié)點,則 id 小的值會主節(jié)點声旺。注意這里的 id 為 string 類型笔链。

補充:master 節(jié)點的職責主要包括集群、節(jié)點和索引的管理腮猖,不負責文檔級

別的管理鉴扫;data 節(jié)點可以關閉 http 功能。



6.詳細描述一下 Elasticsearch 索引文檔的過程

這里的索引文檔應該理解為文檔寫入 ES缚够,創(chuàng)建索引的過程

第一步:客戶從集群某節(jié)點寫入數(shù)據(jù)幔妨,發(fā)送請求。(如果沒有指定路由/協(xié)調(diào)節(jié)點谍椅,

請求的節(jié)點扮演路由節(jié)點的角色误堡。)

第二步:節(jié)點 1 接受到請求后,使用文檔_id 來確定文檔屬于分片 0雏吭。而分片0屬于節(jié)點3锁施,請求會被轉到節(jié)點 3。分片 0 的主分片也分配到節(jié)點 3 上杖们;

第三步:節(jié)點 3 在主分片上執(zhí)行寫操作悉抵,成功后將請求并行轉發(fā)到節(jié)點1和節(jié)點 2 的副本分片上。所有的副本分片都報告成功摘完,節(jié)點3將向協(xié)調(diào)節(jié)點(節(jié)點 1)報告成功姥饰,節(jié)點 1 向請求客戶端報告寫入成功。

如果面試官再問:第二步中的文檔獲取分片的過程孝治?

回答:借助路由算法獲取列粪,路由算法就是根據(jù)路由和文檔 id 計算目標的分片id




7、Elasticsearch 在部署時谈飒,對 Linux 的設置有哪些優(yōu)化方法

1岂座、關閉緩存 swap;

2、堆內(nèi)存設置為:Min(節(jié).點內(nèi)存/2, 32GB);

3杭措、設置最大文件句柄數(shù)费什;



8、lucence 內(nèi)部結構是什么(待補充)

lucence?的核心分為:索引創(chuàng)建手素,索引搜索鸳址;


9、Elasticsearch 中的節(jié)點(比如共 20 個)泉懦,其中的 10 個選了一個 master稿黍,另外 10 個選了另一個 master,怎么辦祠斧?

這個主要是會涉及到腦裂的問題闻察。

1拱礁、當集群 master 候選數(shù)量大于等于 3 個時琢锋,可以通過設置最少投票通過數(shù)量

(discovery.zen.minimum_master_nodes)超過所有候選節(jié)點一半以上來解

決腦裂問題辕漂;

2、當候選數(shù)量為兩個時吴超,只能修改其中一個為master 候選钉嘹,其他作為 data

節(jié)點,避免腦裂問題




10鲸阻、客戶端在和ES集群連接時跋涣,如何選擇特定的節(jié)點執(zhí)行請求的?

客戶端是通過transport 模塊遠程連接一個 elasticsearch 集群鸟悴。它并不加入到集群中陈辱,只是簡單的獲得一個或者多個初始化的 transport 地址,并以 輪詢 的方式與這些地址進行通信细诸。


11.詳細描述一下 Elasticsearch 更新和刪除文檔的過程

刪除和更新也都是寫操作沛贪,但是 Elasticsearch 中的文檔是不可變的,因此不能被刪除或者改動震贵。我們在執(zhí)行刪除的時候利赋,其實不是真正的刪除了這個文檔,因為磁盤上每一個段都有一個.del文件猩系,刪除的時候會把文檔 在.del文件標記為已刪除媚送,但是在匹配查詢的時候依舊能匹配到,只是會在結果中把它過濾掉寇甸。更新也是一樣的塘偎,也會把舊的文檔在.del文件中標記為已刪除,但是查詢結果中也是能查到幽纷,只是在結果中會把標記了已刪除的文件過濾掉式塌。




12.詳細描述一下 Elasticsearch 搜索的過程

在搜索的時候,因為我們不知道對應的查詢會在哪些文檔里命中友浸,所以我們查詢索引中所有的分片峰尝。由于數(shù)據(jù)在每個分片中的排列并不等于在整個索引中的排列,因此有了如下兩個階段:查詢階段和取回階段(query then fetch)收恢,客戶端發(fā)送請求到某一個節(jié)點武学,這個節(jié)點會根據(jù)文檔id去匹配所有相應的分片并給每一個分片發(fā)送請求,接著會進行取回操作伦意,所有分片查詢完后把結果返回到這個節(jié)點進行整理火窒,最后返回給客戶端查詢結果。

參考文檔:http://www.reibang.com/p/7ce8891d6972


13.在 Elasticsearch 中驮肉,是怎么根據(jù)一個詞找到對應的倒排索引的熏矿?

首先我們應該了解一下什么是倒排索引,倒排索引就是通過分詞策略把分詞和文章形成一個關系映射表,這種詞典和映射表的方式就是我們的倒排索引票编,所以當我們?nèi)z索一個詞語的時候褪储,會根據(jù)文檔id去整個索引庫中去查詢到匹配的索引,然后返回給客戶端慧域。




14鲤竹、對于 GC 方面,在使用 Elasticsearch 時要注意什么昔榴?

了解了JVM后再來~


15.Elasticsearch 對于大數(shù)據(jù)量(上億量級)的聚合如何實現(xiàn)辛藻?

Elasticsearch 提供的首個近似聚合是 cardinality 度量。它提供一個字段的基數(shù)互订,即該字段的 distinct 或者 unique 值的數(shù)目吱肌。它是基于HLL算法的。HLL 會先對我們的輸入作哈希運算仰禽,然后根據(jù)哈希運算的結果中的bits做概率估算從而得到基數(shù)岩榆。

16、在并發(fā)情況下坟瓢,Elasticsearch 如果保證讀寫一致勇边?

1、可以通過版本號使用樂觀并發(fā)控制折联,以確保新版本不會被舊版本覆蓋粒褒,由應用層來處理具體的沖突;

2诚镰、另外對于寫操作奕坟,一致性級別 默認是只有當大多數(shù)分片可用時才允許寫操作。如果因為網(wǎng)絡等原因導致寫入副本失敗清笨,這樣該副本被認為故障月杉,分片將會在一個不同的節(jié)點上重建。

3抠艾、對于讀操作苛萎,可以通過設置 replication 保證操作在主分片和副本分片都完成后才會返回;也可以通過設置搜索請求參數(shù)來查詢主分片检号,確保文檔是最新版本腌歉。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市齐苛,隨后出現(xiàn)的幾起案子翘盖,更是在濱河造成了極大的恐慌,老刑警劉巖凹蜂,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馍驯,死亡現(xiàn)場離奇詭異阁危,居然都是意外死亡,警方通過查閱死者的電腦和手機汰瘫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門欲芹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吟吝,你說我怎么就攤上這事【蹦龋” “怎么了剑逃?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長官辽。 經(jīng)常有香客問我蛹磺,道長,這世上最難降的妖魔是什么同仆? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任萤捆,我火速辦了婚禮,結果婚禮上俗批,老公的妹妹穿的比我還像新娘俗或。我一直安慰自己,他們只是感情好岁忘,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布辛慰。 她就那樣靜靜地躺著,像睡著了一般干像。 火紅的嫁衣襯著肌膚如雪帅腌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天麻汰,我揣著相機與錄音速客,去河邊找鬼。 笑死五鲫,一個胖子當著我的面吹牛溺职,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播位喂,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼辅愿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忆某?” 一聲冷哼從身側響起点待,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弃舒,沒想到半個月后癞埠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體状原,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年苗踪,在試婚紗的時候發(fā)現(xiàn)自己被綠了颠区。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡通铲,死狀恐怖毕莱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情颅夺,我是刑警寧澤朋截,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站吧黄,受9級特大地震影響部服,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拗慨,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一廓八、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赵抢,春花似錦剧蹂、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至短绸,卻和暖如春车吹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背醋闭。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工窄驹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人证逻。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓乐埠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親囚企。 傳聞我的和親對象是個殘疾皇子丈咐,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

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