題記問(wèn)題列表和答案來(lái)自國(guó)外博客(原文答案不準(zhǔn)確,有錯(cuò)誤),為避免誤導(dǎo),我對(duì)每個(gè)問(wèn)題做了屬于自己的理解和解答。 問(wèn)題都非?;A(chǔ),文章有點(diǎn)長(zhǎng),但請(qǐng)你耐心把它看完,期望對(duì)你的 Elastic 求職有所幫助! 1、簡(jiǎn)要介紹一下Elasticsearch?嚴(yán)謹(jǐn)起見(jiàn),如下一段話直接拷貝官方網(wǎng)站:https://www./cn/elasticsearch/ Elasticsearch 是一個(gè)分布式、RESTful 風(fēng)格的搜索和數(shù)據(jù)分析引擎,能夠解決不斷涌現(xiàn)出的各種用例。作為 Elastic Stack 的核心,它集中存儲(chǔ)您的數(shù)據(jù),幫助您發(fā)現(xiàn)意料之中以及意料之外的情況。 ElasticSearch 是基于Lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開(kāi)發(fā)的,并作為Apache許可條款下的開(kāi)放源碼發(fā)布,是當(dāng)前流行的企業(yè)級(jí)搜索引擎。 核心特點(diǎn)如下:
2、 您能否說(shuō)明當(dāng)前可下載的穩(wěn)定Elasticsearch版本?Elasticsearch 當(dāng)前最新版本是7.10(2020年11月21日)。 為什么問(wèn)這個(gè)問(wèn)題?ES 更新太快了,應(yīng)聘者如果了解并使用最新版本,基本能說(shuō)明他關(guān)注 ES 更新。甚至從更廣維度講,他關(guān)注技術(shù)的迭代和更新。 但,不信你可以問(wèn)問(wèn),很多求職者只知道用了 ES,什么版本一概不知。 3、安裝 Elasticsearch 需要依賴什么組件嗎?ES 早期版本需要JDK,在7.X版本后已經(jīng)集成了 JDK,已無(wú)需第三方依賴。 4、您能否分步介紹如何啟動(dòng) Elasticsearch 服務(wù)器?啟動(dòng)方式有很多種,一般 bin 路徑下 ./elasticsearch -d 就可以后臺(tái)啟動(dòng)。 打開(kāi)瀏覽器輸入 http://ES IP:9200 就能知道集群是否啟動(dòng)成功。 如果啟動(dòng)報(bào)錯(cuò),日志里會(huì)有詳細(xì)信息,逐條核對(duì)解決就可以。 5、能列出 10 個(gè)使用 Elasticsearch 作為其搜索引擎或數(shù)據(jù)庫(kù)的公司嗎?這個(gè)問(wèn)題,銘毅本來(lái)想刪掉。但仔細(xì)一想,至少能看出求職者的視野夠不夠開(kāi)闊。 參與過(guò) Elastic中文社區(qū)活動(dòng)或者經(jīng)常關(guān)注社區(qū)動(dòng)態(tài)的就知道,公司太多了,列舉如下(排名不分先后):
幾乎我們能想到的互聯(lián)網(wǎng)公司都在使用 Elasticsearch。 關(guān)注 TOP 互聯(lián)網(wǎng)公司的相關(guān)技術(shù)的動(dòng)態(tài)和技術(shù)博客,也是一種非常好的學(xué)習(xí)方式。 6、 解釋一下Elasticsearch Cluster?Elasticsearch 集群是一組連接在一起的一個(gè)或多個(gè) Elasticsearch 節(jié)點(diǎn)實(shí)例。 Elasticsearch 集群的功能在于在集群中的所有節(jié)點(diǎn)之間分配任務(wù),進(jìn)行搜索和建立索引。 7、解釋一下 Elasticsearch Node?節(jié)點(diǎn)是 Elasticsearch 的實(shí)例。實(shí)際業(yè)務(wù)中,我們會(huì)說(shuō):ES集群包含3個(gè)節(jié)點(diǎn)、7個(gè)節(jié)點(diǎn)。 這里節(jié)點(diǎn)實(shí)際就是:一個(gè)獨(dú)立的 Elasticsearch 進(jìn)程,一般將一個(gè)節(jié)點(diǎn)部署到一臺(tái)獨(dú)立的服務(wù)器或者虛擬機(jī)、容器中。 不同節(jié)點(diǎn)根據(jù)角色不同,可以劃分為:
幫助配置和管理在整個(gè)集群中添加和刪除節(jié)點(diǎn)。
存儲(chǔ)數(shù)據(jù)并執(zhí)行諸如CRUD(創(chuàng)建/讀取/更新/刪除)操作,對(duì)數(shù)據(jù)進(jìn)行搜索和聚合的操作。
用于在索引之前對(duì)文檔進(jìn)行預(yù)處理。 ... ... 8、解釋一下 Elasticsearch集群中的 索引的概念 ?Elasticsearch 集群可以包含多個(gè)索引,與關(guān)系數(shù)據(jù)庫(kù)相比,它們相當(dāng)于數(shù)據(jù)庫(kù)表 其他類別概念,如下表所示,點(diǎn)到為止。 9、解釋一下 Elasticsearch 集群中的 Type 的概念 ?5.X 以及之前的 2.X、1.X 版本 ES支持一個(gè)索引多個(gè)type的,舉例 ES 6.X 中的Join 類型在早期版本實(shí)際是多 Type 實(shí)現(xiàn)的。 在6.0.0 或 更高版本中創(chuàng)建的索引只能包含一個(gè) Mapping 類型。 Type 將在Elasticsearch 7.0.0中的API中棄用,并在8.0.0中完全刪除。 很多人好奇為什么刪除?看這里: https://www./guide/en/elasticsearch/reference/current/removal-of-types.html 10、你能否在 Elasticsearch 中定義映射?映射是定義文檔及其包含的字段的存儲(chǔ)和索引方式的過(guò)程。 例如,使用映射定義:
11、Elasticsearch的 文檔是什么?文檔是存儲(chǔ)在 Elasticsearch 中的 JSON 文檔。它等效于關(guān)系數(shù)據(jù)庫(kù)表中的一行記錄。 12、解釋一下 Elasticsearch 的 分片?當(dāng)文檔數(shù)量增加,硬盤容量和處理能力不足時(shí),對(duì)客戶端請(qǐng)求的響應(yīng)將延遲。 在這種情況下,將索引數(shù)據(jù)分成小塊的過(guò)程稱為分片,可改善數(shù)據(jù)搜索結(jié)果的獲取。 13、定義副本、創(chuàng)建副本的好處是什么?副本是 分片的對(duì)應(yīng)副本,用在極端負(fù)載條件下提高查詢吞吐量或?qū)崿F(xiàn)高可用性。 所謂高可用主要指:如果某主分片1出了問(wèn)題,對(duì)應(yīng)的副本分片1會(huì)提升為主分片,保證集群的高可用。 14、請(qǐng)解釋在 Elasticsearch 集群中添加或創(chuàng)建索引的過(guò)程?要添加新索引,應(yīng)使用創(chuàng)建索引 API 選項(xiàng)。創(chuàng)建索引所需的參數(shù)是索引的配置Settings,索引中的字段 Mapping 以及索引別名 Alias。 也可以通過(guò)模板 Template 創(chuàng)建索引。 15、在 Elasticsearch 中刪除索引的語(yǔ)法是什么?可以使用以下語(yǔ)法刪除現(xiàn)有索引: DELETE <index_name> 支持通配符刪除: DELETE my_* 16、在 Elasticsearch 中列出集群的所有索引的語(yǔ)法是什么?
17、在索引中更新 Mapping 的語(yǔ)法?
18、在Elasticsearch中 按 ID檢索文檔的語(yǔ)法是什么?GET test_001/_doc/1 19、解釋 Elasticsearch 中的相關(guān)性和得分?當(dāng)你在互聯(lián)網(wǎng)上搜索有關(guān) Apple 的信息時(shí)。它可以顯示有關(guān)水果或蘋(píng)果公司名稱的搜索結(jié)果。
同樣,當(dāng)我們從 Elasticsearch 中搜索文檔(記錄)時(shí),你會(huì)對(duì)獲取所需的相關(guān)信息感興趣。基于相關(guān)性,通過(guò)Lucene評(píng)分算法計(jì)算獲得相關(guān)信息的概率。 ES 會(huì)將相關(guān)的內(nèi)容都返回給你,只是:計(jì)算得出的評(píng)分高的排在前面,評(píng)分低的排在后面。 計(jì)算評(píng)分相關(guān)的兩個(gè)核心因素是:詞頻和逆向文檔頻率(文檔的稀缺性)。 大體可以解釋為:?jiǎn)纹臋n詞頻越高、得分越高;多篇文檔某詞越稀缺,得分越高。 20、我們可以在 Elasticsearch 中執(zhí)行搜索的各種可能方式有哪些?核心方式如下: 方式一:基于 DSL 檢索(最常用) Elasticsearch提供基于JSON的完整查詢DSL來(lái)定義查詢。 GET /shirts/_search 方式二:基于 URL 檢索 GET /my_index/_search?q=user:seina 方式三:類SQL 檢索 POST /_sql?format=txt 功能還不完備,不推薦使用。 21、Elasticsearch 支持哪些類型的查詢?查詢主要分為兩種類型:精確匹配、全文檢索匹配。
22、精準(zhǔn)匹配檢索和全文檢索匹配檢索的不同?兩者的本質(zhì)區(qū)別:
舉例:郵編、身份證號(hào)的匹配往往是精準(zhǔn)匹配。
舉例:類似B站搜索特定關(guān)鍵詞如“馬保國(guó) 視頻”往往是模糊匹配,相關(guān)的都返回就可以。 23、請(qǐng)解釋一下 Elasticsearch 中聚合?聚合有助于從搜索中使用的查詢中收集數(shù)據(jù),聚合為各種統(tǒng)計(jì)指標(biāo),便于統(tǒng)計(jì)信息或做其他分析。聚合可幫助回答以下問(wèn)題:
聚合的分三類: 主要查看7.10 的官方文檔,早期是4個(gè)分類,別大意啊!
根據(jù)字段值,范圍或其他條件將文檔分組為桶(也稱為箱)。
從字段值計(jì)算指標(biāo)(例如總和或平均值)的指標(biāo)聚合。
子聚合,從其他聚合(而不是文檔或字段)獲取輸入。 24、你能告訴我 Elasticsearch 中的數(shù)據(jù)存儲(chǔ)功能嗎?Elasticsearch是一個(gè)搜索引擎,輸入寫(xiě)入ES的過(guò)程就是索引化的過(guò)程,數(shù)據(jù)按照既定的 Mapping 序列化為Json 文檔實(shí)現(xiàn)存儲(chǔ)。 25、什么是Elasticsearch Analyzer?分析器用于文本分析,它可以是內(nèi)置分析器也可以是自定義分析器。它的核心三部分構(gòu)成如下圖所示: 推薦:Elasticsearch自定義分詞,從一個(gè)問(wèn)題說(shuō)開(kāi)去 26、你可以列出 Elasticsearch 各種類型的分析器嗎?Elasticsearch Analyzer 的類型為內(nèi)置分析器和自定義分析器。
標(biāo)準(zhǔn)分析器是默認(rèn)分詞器,如果未指定,則使用該分詞器。 它基于Unicode文本分割算法,適用于大多數(shù)語(yǔ)言。
基于空格字符切詞。
在simple Analyzer的基礎(chǔ)上,移除停用詞。
不切詞,將輸入的整個(gè)串一起返回。 自定義分詞器的模板 自定義分詞器的在Mapping的Setting部分設(shè)置: PUT my_custom_index 腦海中還是上面的三部分組成的圖示。其中: “char_filter”:{},——對(duì)應(yīng)字符過(guò)濾部分; “tokenizer”:{},——對(duì)應(yīng)文本切分為分詞部分; “filter”:{},——對(duì)應(yīng)分詞后再過(guò)濾部分; “analyzer”:{}——對(duì)應(yīng)分詞器組成部分,其中會(huì)包含:1. 2. 3。 27、如何使用 Elasticsearch Tokenizer?Tokenizer 接收字符流(如果包含了字符過(guò)濾,則接收過(guò)濾后的字符流;否則,接收原始字符流),將其分詞。同時(shí)記錄分詞后的順序或位置(position),以及開(kāi)始值(start_offset)和偏移值(end_offset-start_offset)。 28、token filter 過(guò)濾器 在 Elasticsearch 中如何工作?針對(duì) tokenizers 處理后的字符流進(jìn)行再加工,比如:轉(zhuǎn)小寫(xiě)、刪除(刪除停用詞)、新增(添加同義詞)等。 29、Elasticsearch中的 Ingest 節(jié)點(diǎn)如何工作?ingest 節(jié)點(diǎn)可以看作是數(shù)據(jù)前置處理轉(zhuǎn)換的節(jié)點(diǎn),支持 pipeline管道 設(shè)置,可以使用 ingest 對(duì)數(shù)據(jù)進(jìn)行過(guò)濾、轉(zhuǎn)換等操作,類似于 logstash 中 filter 的作用,功能相當(dāng)強(qiáng)大。 30、Master 節(jié)點(diǎn)和 候選 Master節(jié)點(diǎn)有什么區(qū)別?主節(jié)點(diǎn)負(fù)責(zé)集群相關(guān)的操作,例如創(chuàng)建或刪除索引,跟蹤哪些節(jié)點(diǎn)是集群的一部分,以及決定將哪些分片分配給哪些節(jié)點(diǎn)。 擁有穩(wěn)定的主節(jié)點(diǎn)是衡量集群健康的重要標(biāo)志。 而候選主節(jié)點(diǎn)是被選具備候選資格,可以被選為主節(jié)點(diǎn)的那些節(jié)點(diǎn)。 31、Elasticsearch中的屬性 enabled, index 和 store 的功能是什么?
仍然可以從_source字段中檢索JSON,但是無(wú)法搜索或以其他任何方式存儲(chǔ)JSON。 如果對(duì)非全局或者 Object 類型,設(shè)置 enable : false 會(huì)報(bào)錯(cuò)如下: "type": "mapper_parsing_exception",
如果非要檢索,報(bào)錯(cuò)如下: "type": "search_phase_execution_exception",
32、Elasticsearch Analyzer 中的字符過(guò)濾器如何利用?字符過(guò)濾器將原始文本作為字符流接收,并可以通過(guò)添加,刪除或更改字符來(lái)轉(zhuǎn)換字符流。 字符過(guò)濾分類如下:
用途:刪除HTML元素,如<b>,并解碼HTML實(shí)體,如&amp 。
用途:替換指定的字符。
用途:基于正則表達(dá)式替換指定的字符。 33、請(qǐng)解釋有關(guān) Elasticsearch的 NRT?從文檔索引(寫(xiě)入)到可搜索到之間的延遲默認(rèn)一秒鐘,因此Elasticsearch是近實(shí)時(shí)(NRT)搜索平臺(tái)。 也就是說(shuō):文檔寫(xiě)入,最快一秒鐘被索引到,不能再快了。 寫(xiě)入調(diào)優(yōu)的時(shí)候,我們通常會(huì)動(dòng)態(tài)調(diào)整:refresh_interval = 30s 或者更達(dá)值,以使得寫(xiě)入數(shù)據(jù)更晚一點(diǎn)時(shí)間被搜索到。 34、REST API在 Elasticsearch 方面有哪些優(yōu)勢(shì)?REST API是使用超文本傳輸協(xié)議的系統(tǒng)之間的通信,該協(xié)議以 XML 和 JSON格式傳輸數(shù)據(jù)請(qǐng)求。 REST 協(xié)議是無(wú)狀態(tài)的,并且與帶有服務(wù)器和存儲(chǔ)數(shù)據(jù)的用戶界面分開(kāi),從而增強(qiáng)了用戶界面與任何類型平臺(tái)的可移植性。它還提高了可伸縮性,允許獨(dú)立實(shí)現(xiàn)組件,因此應(yīng)用程序變得更加靈活。 REST API與平臺(tái)和語(yǔ)言無(wú)關(guān),只是用于數(shù)據(jù)交換的語(yǔ)言是XML或JSON。 借助:REST API 查看集群信息或者排查問(wèn)題都非常方便。 35、在安裝Elasticsearch時(shí),請(qǐng)說(shuō)明不同的軟件包及其重要性?這個(gè)貌似沒(méi)什么好說(shuō)的,去官方文檔下載對(duì)應(yīng)操作系統(tǒng)安裝包即可。 部分功能是收費(fèi)的,如機(jī)器學(xué)習(xí)、高級(jí)別 kerberos 認(rèn)證安全等選型要知悉。 36、Elasticsearch 支持哪些配置管理工具?
37、您能解釋一下X-Pack for Elasticsearch的功能和重要性嗎?X-Pack 是與Elasticsearch一起安裝的擴(kuò)展程序。 X-Pack的各種功能包括安全性(基于角色的訪問(wèn),特權(quán)/權(quán)限,角色和用戶安全性),監(jiān)視,報(bào)告,警報(bào)等。 38、可以列出X-Pack API 嗎?付費(fèi)功能只是試用過(guò)(面試時(shí)如實(shí)回答就可以)。 7.1 安全功能免費(fèi)后,用 X-pack 創(chuàng)建Space、角色、用戶,設(shè)置SSL加密,并且為不同用戶設(shè)置不同的密碼和分配不同的權(quán)限。 其他如:機(jī)器學(xué)習(xí)、 Watcher、 Migration 等 API 用的較少。 39、能列舉過(guò)你使用的 X-Pack 命令嗎?7.1 安全功能免費(fèi)后,使用了:setup-passwords 為賬號(hào)設(shè)置密碼,確保集群安全。 40、在Elasticsearch中 cat API的功能是什么?cat API 命令提供了Elasticsearch 集群的分析、概述和運(yùn)行狀況,其中包括與別名,分配,索引,節(jié)點(diǎn)屬性等有關(guān)的信息。 這些 cat 命令使用查詢字符串作為其參數(shù),并以J SON 文檔格式返回結(jié)果信息。 41、Elasticsearch 中常用的 cat命令有哪些?面試時(shí)說(shuō)幾個(gè)核心的就可以,包含但不限于:
42、您能解釋一下 Elasticsearch 中的 Explore API 嗎?沒(méi)有用過(guò),這是 Graph (收費(fèi)功能)相關(guān)的API。 點(diǎn)到為止即可,類似問(wèn)題實(shí)際開(kāi)發(fā)現(xiàn)用現(xiàn)查,類似問(wèn)題沒(méi)有什么意義。 https://www./guide/en/elasticsearch/reference/current/graph-explore-api.html 43、遷移 Migration API 如何用作 Elasticsearch?遷移 API簡(jiǎn)化了X-Pack索引從一個(gè)版本到另一個(gè)版本的升級(jí)。 點(diǎn)到為止即可,類似問(wèn)題實(shí)際開(kāi)發(fā)現(xiàn)用現(xiàn)查,類似問(wèn)題沒(méi)有什么意義。 https://www./guide/en/elasticsearch/reference/current/migration-api.html 44、如何在 Elasticsearch中 搜索數(shù)據(jù)?Search API 有助于從索引、路由參數(shù)引導(dǎo)的特定分片中查找檢索數(shù)據(jù)。 45、你能否列出與 Elasticsearch 有關(guān)的主要可用字段數(shù)據(jù)類型?
46、詳細(xì)說(shuō)明ELK Stack及其內(nèi)容?ELK Stack是一系列搜索和分析工具(Elasticsearch),收集和轉(zhuǎn)換工具(Logstash)以及數(shù)據(jù)管理及可視化工具(Kibana)、解析和收集日志工具(Beats 未來(lái)是 Agent)以及監(jiān)視和報(bào)告工具(例如X Pack)的集合。 相當(dāng)于用戶基本不再需要第三方技術(shù)棧,就能全流程、全環(huán)節(jié)搞定數(shù)據(jù)接入、存儲(chǔ)、檢索、可視化分析等全部功能。 47、Kibana在Elasticsearch的哪些地方以及如何使用?Kibana是ELK Stack –日志分析解決方案的一部分。 它是一種開(kāi)放源代碼的可視化工具,可以以拖拽、自定義圖表的方式直觀分析數(shù)據(jù),極大降低的數(shù)據(jù)分析的門檻。 未來(lái)會(huì)向類似:商業(yè)智能和分析軟件 - Tableau 發(fā)展。 48、logstash 如何與 Elasticsearch 結(jié)合使用?logstash 是ELK Stack附帶的開(kāi)源 ETL 服務(wù)器端引擎,該引擎可以收集和處理來(lái)自各種來(lái)源的數(shù)據(jù)。 最典型應(yīng)用包含:同步日志、郵件數(shù)據(jù),同步關(guān)系型數(shù)據(jù)庫(kù)(Mysql、Oracle)數(shù)據(jù),同步非關(guān)系型數(shù)據(jù)庫(kù)(MongoDB)數(shù)據(jù),同步實(shí)時(shí)數(shù)據(jù)流 Kafka數(shù)據(jù)、同步高性能緩存 Redis 數(shù)據(jù)等。 49、Beats 如何與 Elasticsearch 結(jié)合使用?Beats是一種開(kāi)源工具,可以將數(shù)據(jù)直接傳輸?shù)?Elasticsearch 或通過(guò) logstash,在使用Kibana進(jìn)行查看之前,可以對(duì)數(shù)據(jù)進(jìn)行處理或過(guò)濾。 傳輸?shù)臄?shù)據(jù)類型包含:審核數(shù)據(jù),日志文件,云數(shù)據(jù),網(wǎng)絡(luò)流量和窗口事件日志等。 50、如何使用 Elastic Reporting ?收費(fèi)功能,只是了解,點(diǎn)到為止。 Reporting API有助于將檢索結(jié)果生成 PD F格式,圖像 PNG 格式以及電子表格 CSV 格式的數(shù)據(jù),并可根據(jù)需要進(jìn)行共享或保存。 51、您能否列出 與 ELK日志分析相關(guān)的應(yīng)用場(chǎng)景?
小結(jié)以上都是非常非常基礎(chǔ)的問(wèn)題,更多大廠筆試、面試真題拆解分析推薦看 Elastic 面試系列專題文章。 面試要“以和為貴”、不要搞窩里斗, Elastic 面試官要講“面德“,點(diǎn)到為止! 應(yīng)聘者也要注意:不要大意!面試官都是”有備而來(lái)”,針對(duì)較難的問(wèn)題,要及時(shí)“閃”,要做到“全部防出去”。 如果遇到應(yīng)聘者有回答 不上來(lái)的,面試官要:“耗子猥汁“,而應(yīng)聘者要好好反思,以后不要再犯這樣的錯(cuò)誤。 參考: https://www./elasticsearch-interview-questions/ |
|