ElasticSearch 的核心功能

要深入理解 ElasticSearch 的核心功能,需要全面掌握其 全文搜索分析聚合索引生命周期管理(ILM) 的設計原理和實際應用。


1. 全文搜索

ElasticSearch 的全文搜索是其核心功能之一,依賴于倒排索引和強大的分詞、相關性評分機制。

(1) 倒排索引
  • 倒排索引是 ElasticSearch 的底層數據結構,記錄每個詞條(term)在哪些文檔中出現。
  • 優化了基于關鍵詞的搜索性能。
(2) 分詞(Analysis)

ElasticSearch 提供靈活的分詞機制,將文檔字段分解為獨立的詞條。

  • 分詞器(Analyzer):
    • 包括字符過濾器、分詞器、和詞條過濾器。
    • 示例:Text: "The quick brown fox"
      • 字符過濾器:去除 HTML 標簽等。
      • 分詞器:["The", "quick", "brown", "fox"]
      • 詞條過濾器:去除停用詞,如 ["quick", "brown", "fox"]
  • 常用分詞器:standardsimplewhitespacengram
(3) 查詢 DSL

ElasticSearch 提供強大的查詢語言:

  • match 查詢: 適用于全文檢索,分詞后匹配。
    {"query": {"match": {"content": "quick fox"}}
    }
    
  • term 查詢: 精確匹配,不分詞。
  • 布爾查詢: 將多個子查詢組合,使用 mustshouldfilter 等。
(4) 相關性評分

ElasticSearch 使用 BM25 算法計算文檔與查詢的相關性,基于以下因素:

  • 詞頻(TF): 詞在文檔中出現的次數。
  • 逆文檔頻率(IDF): 詞的稀有程度。
  • 字段長度: 長字段對匹配的影響更小。

2. 分析(Analysis)

ElasticSearch 不僅支持全文搜索,還提供強大的數據分析功能,幫助用戶從大規模數據中提取有價值的洞見。

(1) 聚合框架

聚合(Aggregation)是一種用于分組、計算和統計數據的機制。

  • 分類:

    • 桶(Bucket): 按條件對文檔分組,如按日期、地理位置。
    • 度量(Metric): 統計數據的數值特征,如最大值、最小值、平均值。
    • 管道(Pipeline): 對其他聚合的結果進行二次處理。
  • 示例:計算每月銷售額

    {"aggs": {"monthly_sales": {"date_histogram": {"field": "sale_date","calendar_interval": "month"},"aggs": {"total_sales": {"sum": {"field": "amount"}}}}}
    }
    
(2) 實時和分布式處理
  • ElasticSearch 的分布式架構允許在多節點上并行執行聚合,顯著提高性能。
(3) 向量搜索(Vector Search)

支持基于嵌入向量的相似性搜索,特別適用于推薦系統和自然語言處理(NLP)任務。


3. 聚合(Aggregation)

(1) 常見聚合類型
  1. 計數(Count):
    • 統計文檔數量。
  2. 求和(Sum):
    • 計算字段值的總和。
  3. 平均值(Avg):
    • 計算字段值的平均值。
  4. 分布分析:
    • 按字段值分組,計算分布情況。
(2) 使用場景
  • 數據報表: 如按地域分布的用戶量。
  • 性能監控: 按時間段計算指標變化。
  • 日志分析: 計算錯誤日志出現的頻率。

4. 索引生命周期管理(ILM)

(1) 什么是 ILM?

索引生命周期管理(Index Lifecycle Management,ILM)用于自動管理索引的生命周期,降低存儲和性能成本。
索引的生命周期通常分為以下階段:

  • 熱(Hot): 索引寫入和搜索頻繁。
  • 溫(Warm): 索引只讀,搜索頻率降低。
  • 冷(Cold): 索引使用頻率非常低。
  • 刪除(Delete): 索引到達保留期限后被刪除。
(2) ILM 策略

定義一個 ILM 策略包含以下部分:

  • 觸發條件: 如索引大小、時間。
  • 動作(Action): 例如關閉索引、遷移分片、刪除索引。

示例策略:

{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size": "50gb","max_age": "30d"}}},"warm": {"actions": {"shrink": {"number_of_shards": 1}}},"cold": {"actions": {"allocate": {"include": {"data": "cold"}}}},"delete": {"actions": {"delete": {}}}}}
}
(3) 使用場景
  • 日志管理: 定期歸檔和刪除舊日志。
  • 成本優化: 熱數據使用 SSD,冷數據使用 HDD。

總結

ElasticSearch 的核心功能以全文搜索為基礎,同時提供靈活的數據分析能力(聚合)、優化的分布式架構以及對索引生命周期的精細管理。結合實際應用場景,ElasticSearch 可以處理從實時搜索到復雜分析的大量任務,在企業搜索引擎、日志管理、推薦系統等領域發揮關鍵作用。

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

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

相關文章

在Nginx部署Web應用,如何保障后端API的安全

1. 使用HTTPS和http2.0 參考:Nginx配置HTTP2.0_nginx 支持 2.0-CSDN博客 2. 設置嚴格的CORS策略 通過add_header指令設置CORS頭。 只允許來自https://frontend.yourdomain.com的請求訪問API location /api/ {if ($http_origin ~* (https://frontend\.yourdomai…

Nginx單向鏈表 ngx_list_t

目錄 基本概述 數據結構 接口描述 具體實現 ngx_list_create ngx_list_init ngx_list_push 使用案例 整理自 nginx 1.9.2 源碼 和 《深入理解 Nginx:模塊開發與架構解析》 基本概述 Nginx 中的 ngx_list_t 是一個單向鏈表容器,鏈表中的每一個節…

es快速掃描

介紹 Elasticsearch簡稱es,一款開源的分布式全文檢索引擎 可組建一套上百臺的服務器集群,處理PB級別數據 可滿足近實時的存儲和檢索 倒排索引 跟正排索引相對,正排索引是根據id進行索引,所以查詢效率非常高,但是模糊…

軟件需求建模方法

軟件需求建模是一個涉及多個學科的領域,其研究方向廣泛且多樣。以下是一些主要的研究方向: 1. 需求工程方法:研究如何更有效地收集、分析、規格化和驗證軟件需求。這包括新的需求工程方法論和工具的開發。 2. 需求管理:關注需求…

軟件項目需求分析的實踐探索(1)

一、項目啟動與規劃 組建團隊 包括項目經理、系統分析師、業務分析師以及可能涉及的最終用戶代表和領域專家等。例如,開發一個醫療管理軟件,就需要有醫療行業的專家參與,確保對醫療業務流程有深入理解。明確各成員的職責,如系統分…

wordpres當前分類調用父分類的名稱和鏈接

在WordPress中&#xff0c;如果你想在當前分類頁面調用并顯示父分類的名稱和鏈接&#xff0c;你可以使用以下代碼片段&#xff1a; <?php // 獲取當前分類的ID $cat_id get_queried_object_id();// 獲取當前分類的父分類ID $parent_id get_term($cat_id, category)->…

前端Python應用指南(三)Django vs Flask:哪種框架適合構建你的下一個Web應用?

《寫給前端的python應用指南》系列&#xff1a; &#xff08;一&#xff09;快速構建 Web 服務器 - Flask vs Node.js 對比&#xff08;二&#xff09;深入Flask&#xff1a;理解Flask的應用結構與模塊化設計 在上一篇博文中&#xff0c;我們深入探討了Flask框架&#xff0c;…

網絡管理-期末項目(附源碼)

環境&#xff1a;網絡管理 主機資源監控系統項目搭建 &#xff08;保姆級教程 建議點贊 收藏&#xff09;_搭建網絡版信息管理系統-CSDN博客 效果圖 下面3個文件的項目目錄(python3.8.8的虛擬環境) D:\py_siqintu\myproject5\Scripts\mytest.py D:\py_siqintu\myproject5\Sc…

MySQL 常用程序介紹

以下是一些常用的MySQL程序&#xff1a; 程序名作?mysqldMySQL的守護進程即 MySQL 服務器&#xff0c;要使?MySQL 服務器 mysqld必須正在運?狀態mysql MySQL客?端程序&#xff0c;?于交互式輸? SQL 語句或以批處理模式從?件執?SQL的命令??具 mysqlcheck?于檢查、修…

Redis篇--常見問題篇4--大Key(Big Key,什么是大Key,影響及使用建議)

1、概述 大Key&#xff1a;通常是指值&#xff08;Value&#xff09;的長度非常大&#xff0c;實際上鍵&#xff08;Key&#xff09;長度很大也算。通常來說&#xff0c;鍵本身不會很長&#xff0c;占用的內存較少&#xff0c;因此判斷一個鍵是否為bigKey主要看它對應的值的大…

云手機+YouTube:改變通信世界的劃時代技術

隨著科技的不斷進步&#xff0c;手機作為人們生活中不可或缺的工具&#xff0c;也在不斷地更新換代。近年來&#xff0c;一個名為“油管云手機”的全新產品正在引起廣泛的關注和討論。作為一個運用最新科技實現的新型手機&#xff0c;它在通信領域帶來了全新的體驗和革命性的變…

ModbusTCP從站轉Profinet主站案例

一. 案例背景 在復雜的工業自動化場景中&#xff0c;企業常常會采用不同品牌的設備來構建生產系統。西門子SINAMICS G120變頻器以其高性能、高精度的速度和轉矩控制功能&#xff0c;在電機驅動領域應用廣泛。施耐德M580可編程邏輯控制器則以強大的邏輯控制和數據處理能力著稱&…

JS 函數的定義與調用

文章目錄 1. 普通函數-無形參2. 普通函數-有形參3. 普通函數-參數默認值4. 普通函數-返回值5. 立即執行函數6. 匿名函數7. 箭頭函數8. 函數提升 1. 普通函數-無形參 函數定義時沒有指定形參, 調用時仍然可以向其傳遞參數, 通過默認參數 arguments 獲取, arguments 是一個偽數組…

MySQL的索引失效的原因有那些

1. 數據類型不匹配 詳細說明&#xff1a;MySQL在比較不同數據類型的值時&#xff0c;可能會嘗試進行隱式轉換。如果這種轉換導致了復雜度增加或無法直接利用索引&#xff0c;則會導致索引失效。 實例與解決方案&#xff1a; -- 錯誤示例&#xff1a;數據類型不匹配 select *…

邁向未來:.NET技術的持續創新與發展前景

隨著信息技術的飛速發展&#xff0c;編程語言和開發框架不斷涌現&#xff0c;許多技術平臺以其獨特的優勢贏得了開發者的青睞。在這場技術的競爭中&#xff0c;.NET平臺憑借其卓越的性能、廣泛的生態系統以及持續創新的精神&#xff0c;成為了全球開發者的重要選擇。本文將探討…

微信小程序-基于Vant Weapp UI 組件庫的Area 省市區選擇

Area 省市區選擇&#xff0c;省市區選擇組件通常與 彈出層 組件配合使用。 areaList 格式 areaList 為對象結構&#xff0c;包含 province_list、city_list、county_list 三個 key。 每項以地區碼作為 key&#xff0c;省市區名字作為 value。地區碼為 6 位數字&#xff0c;前兩…

Canvas指定三角形內部生成隨機點

使用重心坐標&#xff08;barycentric coordinates&#xff09;或者通過面積比例的方法來確定點是否在三角形內。不過&#xff0c;對于簡單的應用&#xff0c;一種常見的方法是使用隨機點并檢查它們是否在三角形內部。如果不在&#xff0c;就重新生成&#xff0c;直到得到足夠數…

智駕感知「大破局」!新一輪混戰開啟

隨著智能駕駛搭載率的攀升&#xff0c;艙外傳感器賽道迎來新變局。 一方面&#xff0c;從近幾年智駕傳感器的配置變化來看&#xff0c;攝像頭的主導地位顯而易見。 12月10-12日&#xff0c;由德賽西威總冠名的2024&#xff08;第八屆&#xff09;高工智能汽車年會暨年度金球獎…

深入解析Android Recovery系統

深入解析Android Recovery系統 引言 在Android系統中,Recovery模式是一個非常重要的組成部分。它主要用于系統的恢復、更新和修復。當用戶遇到系統問題時,Recovery模式可以提供一種安全的方式來恢復系統到正常狀態。本文將深入探討Android Recovery系統的實現原理,重點分析…

Kibana8.17.0在mac上的安裝

1、Kibana是什么 Kibana是與elasticsearch配套使用的數據分析與可視化工具&#xff0c;通過Kibana可以輕松與es中存儲的數據進行高效的交互&#xff0c;包括數據寫入、檢索、刪除等操作&#xff0c;并可以通過編寫部分代碼將數據做成各種報表&#xff0c;從而進行非常直觀的統…