ES面試題系列「一」

1、Elasticsearch 是什么?它與傳統數據庫有什么區別?

答案:Elasticsearch 是一個基于 Lucene 的分布式、開源的搜索和分析引擎,主要用于處理大量的文本數據,提供快速的搜索和分析功能。與傳統數據庫相比,ES 更側重于全文搜索和實時數據分析,數據以 JSON 格式存儲,具有更好的擴展性和靈活性,而傳統數據庫擅長事務處理和結構化數據的存儲與查詢。

2、什么是倒排索引?它是如何工作的?

答案:倒排索引是 Elasticsearch 的核心數據結構。它從詞出發,記載了每個詞在哪些文檔中出現過,由詞典和倒排表組成。在構建倒排索引時,會對文檔進行分詞處理,將文檔拆分成詞條,然后建立詞條與文檔 ID 的映射關系。查詢時,通過查找詞條在倒排索引中的位置,快速定位到包含該詞條的文檔。

3、Elasticsearch 中的索引、文檔和字段分別是什么?

答案:索引類似于關系數據庫中的數據庫,是具有相同結構的文檔的集合;文檔是 ES 中最小的存儲單位,相當于關系數據庫中的一條記錄,以 JSON 格式存儲;字段是文檔中的屬性,類似于關系數據庫中的列,每個字段都有其數據類型。

4、如何理解 Elasticsearch 中的分片和副本?

答案:分片是為了提高 ES 的存儲和查詢性能,將索引分成多個部分,分布在不同的節點上。副本是每個分片的備份,用于提高可用性和容錯性,當主分片出現故障時,副本可以替代主分片提供服務。合理設置分片和副本數量可以平衡系統的性能、可用性和成本。

5、Elasticsearch 是如何實現 Master 選舉的?

答案:前置前提是只有候選主節點(master:true)的節點才能成為主節點,并且要滿足最小主節點數(min_master_nodes)以防止腦裂。選舉流程大致為:第一步,確認候選主節點數達標,即滿足 elasticsearch.yml 設置的 discovery.zen.minimum_master_nodes 的值;第二步,比較節點,先判定是否具備 master 資格,具備候選主節點資格的優先返回;若兩節點都為候選主節點,則 id 小的值會成為主節點,這里的 id 為 string 類型。

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

答案:第一步,客戶端向集群中的某節點寫入數據,發送請求,如果沒有指定路由 / 協調節點,請求的節點扮演路由節點的角色;第二步,節點接收到請求后,使用文檔_id 來確定文檔屬于哪個分片,請求會被轉到對應的主分片所在節點;第三步,主分片所在節點在主分片上執行寫操作,如果成功,則將請求并行轉發到其他副本分片上,等待結果返回。所有的副本分片都報告成功后,主分片所在節點將向協調節點報告成功,協調節點再向請求客戶端報告寫入成功。

7、Elasticsearch 的查詢流程是怎樣的?

答案:首先,客戶端發送搜索請求,請求中包含查詢條件、索引名稱等信息。Elasticsearch 根據搜索請求中指定的索引名稱和查詢條件,確定哪些分片包含符合查詢條件的文檔數據,然后并行地向這些分片發送搜索請求,每個分片在本地執行相應的查詢操作并返回部分結果。接著,Elasticsearch 將這些部分結果匯總起來,并根據查詢要求對結果進行排序,最后將搜索結果返回給客戶端。

8、在 Elasticsearch 中,如何進行索引數據的調優?

答案:可以從設計階段、寫入階段、查詢階段等方面進行調優。設計階段,根據業務增量需求,采取基于日期模板創建索引,使用別名進行索引管理,合理設置分詞器,充分考慮字段屬性等;寫入階段,寫入前可將副本數設置為 0,關閉 refresh_interval,寫入過程中采用 bulk 批量寫入,寫入后恢復副本數和刷新間隔,盡量使用自動生成的 id;查詢階段,禁用 wildcard 和批量 terms,充分利用倒排索引機制,能使用 keyword 類型盡量使用 keyword,數據量大時先基于時間敲定索引再檢索,設置合理的路由機制等。

9、什么是 Elasticsearch 中的 Mapping?它有什么作用?

答案:Mapping 定義了文檔的結構,包括字段的數據類型、索引方式、分析器等信息。它的作用是告訴 Elasticsearch 如何解析和存儲文檔中的數據,以及如何對字段進行索引和搜索,確保數據能夠被正確地處理和查詢。

10、Elasticsearch 支持哪些數據類型?

答案:常見的數據類型有文本類型(text)、關鍵字類型(keyword)、日期類型(date)、數值類型(如 integer、long、float、double 等)、布爾類型(boolean),還有二進制類型(binary)、地理空間類型(geo - point、geo - shape)等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80986.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80986.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80986.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2025年6月一區SCI-不實野燕麥優化算法Animated Oat Optimization-附Matlab免費代碼

引言 近年來,在合理框架內求解優化問題的元啟發式算法的發展引起了全球科學界的極大關注。本期介紹一種新的元啟發式算法——不實野燕麥優化算法Animated Oat Optimization algorithm,AOO。該算法模擬了不實野燕麥的3種獨特行為,于2025年6月…

Agent Builder API - Agent Smith 擴展的后端服務(開源代碼)

?一、軟件介紹 文末提供程序和源碼下載 Agent Builder API - Agent Smith 擴展的后端服務(開源代碼)手動設置:在本地計算機中克隆此存儲庫并啟動 python FAST API 服務器。(可選)安裝并設置 Mongo DB。Dev Container…

C及C++的SOAP協議庫

一.gSOAP gSOAP 是一個功能強大的開源工具包,專為 C 和 C 設計,用于快速開發基于 SOAP 協議的 Web 服務和客戶端。 1.協議支持 SOAP 版本:完整支持 SOAP 1.1/1.2 規范,包括消息格式、編碼規則和錯誤處理。 傳輸協議&#xff1a…

html5+css3實現傅里葉變換的動態展示效果(僅供參考)

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>傅里葉變換的動態展示效果</title><sty…

ECharts中Map(地圖)樣式配置、漸變色生成

前言 在日常開發中&#xff0c;ECharts 幾乎成了我們繪制數據圖表的標配工具&#xff0c;功能強大到幾乎無所不能。不過每次用的時候都要翻官方文檔查配置項&#xff0c;確實有點小繁瑣 &#x1f605; 為了提升效率&#xff0c;也方便以后快速復用&#xff0c;這里就整理記錄…

內存分配器ptmalloc2、tcmalloc、jemalloc,結構設計、內存分配過程詳解

1. 引言 博主之前做過一個高并發內存池的項目實踐&#xff0c;在實踐中對于內存分配器的內存分配過程理解更加深刻了。在此期間&#xff0c;翻查了不少資料以及博客&#xff0c;發現源碼分享的博客不多&#xff0c;能生動完整的講述ptmalloc2、tcmalloc、jemalloc它們的結構設…

【擁抱AI】Deer-Flow字節跳動開源的多智能體深度研究框架

最近發現一款可以對標甚至可能超越GPT-Researcher的AI深度研究應用&#xff0c;Deer-Flow&#xff08;Deep Exploration and Efficient Research Flow&#xff09;作為字節跳動近期開源的重量級項目&#xff0c;正以其模塊化、靈活性和人機協同能力引發廣泛關注。該項目基于 La…

openfeign與dubbo調用下載excel實踐

一、前言 openfeign和dubbo均是rpc框架 RPC&#xff08;Remote Procedure Call&#xff0c;遠程過程調用&#xff09;框架 是一種允許程序像調用本地方法一樣調用遠程服務器上函數的技術。它隱藏了底層網絡通信的復雜性&#xff0c;讓開發者可以專注于業務邏輯&#xff0c;實現…

解密企業級大模型智能體Agentic AI 關鍵技術:MCP、A2A、Reasoning LLMs-強化學習算法

解密企業級大模型智能體Agentic AI 關鍵技術&#xff1a;MCP、A2A、Reasoning LLMs-強化學習算法 現在我們的核心問題是有一些同學會知道要才能強化學習。為什么才能強化學習&#xff1f;是實現AGI。例如從這個其實你從第一階段開始以后&#xff0c;就是chatbot&#xff0c;這…

音頻分類的學習

1.深度學習PyTorch入門-語音分類 https://blog.csdn.net/sinat_41787040/article/details/129795496 https://github.com/musikalkemist/pytorchforaudio https://github1s.com/musikalkemist/pytorchforaudio/blob/main/04%20Creating%20a%20custom%20dataset/urbansoundda…

美SEC主席:探索比特幣上市證券交易所

作者/演講者&#xff1a;美SEC主席Paul S. Atkins 編譯&#xff1a;Liam 5月12日&#xff0c;由美國SEC加密貨幣特別工作組發起的主題為《資產上鏈&#xff1a;TradFi與DeFi的交匯點》系列圓桌會議如期舉行。 會議期間&#xff0c;現任美SEC主席Paul S. Atkins發表了主旨演講。…

Qt file文件操作詳解

1.引言 很多應用程序都具備操作文件的能力&#xff0c;包括對文件進行寫入和讀取&#xff0c;創建和刪除文件等等&#xff0c;甚至某些應用程序的就是為了操作文件&#xff0c;像WPS Office。基于此Qt框架中專門提供了對文件操作的類&#xff1a;QFile。 2.QFile文件操作 QF…

【測試開發知識儲備】之Jacoco(Java Code Coverage)

文章目錄 Jacoco是什么Jacoco的主要功能&#xff08;一&#xff09;多樣化覆蓋率指標分析&#xff08;二&#xff09; 豐富的報告生成&#xff08;三&#xff09;實時數據收集 Jacoco的工作原理&#xff08;一&#xff09;字節碼增強&#xff08;二&#xff09;測試執行與數據收…

Docker 介紹與使用

Docker 文章目錄 Docker介紹與虛擬機的比較啟動速度占用資源 優勢更容易遷移更容易維護更容易擴展 使用場景持續集成提供可伸縮的云服務搭建微服務架構 鏡像與容器鏡像構成&#xff08;分層結構&#xff09;鏡像與容器的區別 安裝 Docker常用命令介紹鏡像相關容器相關 實戰&…

《AI大模型應知應會100篇》第62篇:TypeChat——類型安全的大模型編程框架

第62篇&#xff1a;TypeChat——類型安全的大模型編程框架 摘要 在構建 AI 應用時&#xff0c;一個常見的痛點是大語言模型&#xff08;LLM&#xff09;輸出的不確定性與格式不一致問題。開發者往往需要手動解析、校驗和處理模型返回的內容&#xff0c;這不僅增加了開發成本&a…

upload-labs通關筆記-第5關 文件上傳之.ini繞過

目錄 一、ini文件繞過原理 二、源碼審計 三、滲透實戰 1、查看提示 2、制作.user.ini文件 &#xff08;1&#xff09;首先創建一個文本文件 &#xff08;2&#xff09;保存文件名為.user.ini 2、制作jpg后綴腳本 &#xff08;1&#xff09;創建一個文本文件 &#xf…

為什么 Linux 上默認沒有 host.docker.internal

在 Linux 環境中&#xff0c;host.docker.internal 是 Docker 為容器提供的一個特殊 DNS 名稱&#xff0c;用于指向宿主機的 IP 地址&#xff08;類似 macOS/Windows 中的行為&#xff09;。但這個功能在 Linux 上默認不啟用&#xff0c;需要手動配置才能使用。以下是詳細解釋和…

C++GO語言微服務和服務發現②

01 創建go-micro項目-查看生成的 proto文件 02 創建go-micro項目-查看生成的main文件和handler ## 創建 micro 服務 命令&#xff1a;micro new --type srv test66 框架默認自帶服務發現&#xff1a;mdns。 使用consul服務發現&#xff1a; 1. 初始consul服務發現&…

Redis--常見數據類型List列表

目錄 一、概念 二、命令 2.1 LPUSH 2.2 LPUSHX 2.3 RPUSH 2.4 RPUSHX 2.5 LRANGE 2.6 LPOP 2.7 RPOP 2.8 LINDEX 2.9 LINSERT 2.10 LLEN 2.11 阻塞版本命令 三、內部編碼 一、概念 列表類型是用來存儲多個有序的字符串&#xff0c;列表中的每個字符串稱為元素&…

QListWedget控件使用指南

QListWedget公共函數 函數簽名功能描述QListWidget(QWidget *parent nullptr)構造函數&#xff0c;創建一個QListWidget對象&#xff0c;可指定父部件&#xff08;默認為nullptr&#xff09;。virtual ~QListWidget()虛析構函數&#xff0c;釋放QListWidget對象及其資源。voi…