【基礎篇】第4章 Elasticsearch 查詢與過濾

在Elasticsearch的世界里,高效地從海量數據中檢索出所需信息是其核心價值所在。本章將深入解析查詢與過濾的機制,從基礎查詢到復合查詢,再到全文搜索與分析器的定制,為你揭開數據檢索的神秘面紗。

4.1 基本查詢

4.1.1 Match查詢

Match查詢是最基礎的全文查詢方式,用于查找與指定字段內容相匹配的文檔。它支持模糊匹配,適用于字符串字段。例如,查詢包含"elasticsearch"的文檔:

{"query": {"match": {"content": "elasticsearch"}}
}

4.1.2 Term查詢

Term查詢用于精確匹配,不進行分析,即搜索時完全按照輸入的詞進行查找,適用于數字、日期或未經分析的字符串字段:

{"query": {"term": {"tag": "tutorial"}}
}

4.1.3 Range查詢

Range查詢用于篩選字段值在特定范圍內的文檔,適用于日期、數字等類型:

{"query": {"range": {"publish_date": {"gte": "2023-01-01","lte": "2023-12-31"}}}
}

4.2 復合查詢與過濾

4.2.1 組合查詢

組合查詢通過將多個查詢條件邏輯組合起來,實現更復雜的檢索需求。常見的組合查詢有boolshouldmustmust_not等。

{"query": {"bool": {"must": [{ "match": { "title": "Elasticsearch" }}],"filter": [{ "term": { "category": "technology" }}]}}
}

4.2.2 布爾查詢與上下文

布爾查詢是復合查詢中最常用的形式,它允許你組合多個查詢條件,通過must(與)、should(或)、must_not(非)來表達邏輯關系。filter子句用于過濾條件,與評分無關,提高查詢效率。

4.2.3 查詢與過濾的區別

查詢上下文(query context)會影響文檔的評分,適合全文搜索;而過濾上下文(filter context)不計算文檔得分,僅用于過濾結果集,適用于精確匹配或條件篩選,性能更優。

4.3 全文搜索與分析器

4.3.1 全文檢索原理

全文檢索基于倒排索引,將文檔中每個單詞映射到包含該單詞的所有文檔的列表。這一機制允許Elasticsearch快速定位包含特定詞匯的文檔,是全文搜索的基礎。
在這里插入圖片描述

4.3.2 分析器的工作機制

分析器是全文搜索的核心組件,負責將文本分割成詞語(Tokenization)、轉換(Normalization)、去除停用詞(Stop Words Removal)等過程,最終生成索引項或查詢項。這一過程包括了三個關鍵步驟:字符過濾、分詞、以及詞元過濾。下面,我們將逐一深入探討這些步驟。

字符過濾(Character Filtering)

字符過濾是分析過程的第一步,它的主要任務是在文本被分詞之前,對文本進行預處理,移除或替換某些不需要的字符。例如,HTML標簽、特殊符號或者非打印字符等,常常在這個階段被處理掉。字符過濾器可以確保后續步驟能夠專注于文本的實際內容,而不是被這些附加元素干擾。

示例代碼片段:

"char_filter": ["html_strip"]

這里,html_strip就是一個字符過濾器,它負責去除文本中的HTML標簽,確保純文本內容進入后續處理環節。

分詞(Tokenization)

分詞是分析過程中最核心的步驟,它將文本切分成一個個有意義的單元,這些單元被稱為詞元(tokens)。分詞器(tokenizer)決定著如何將文本分割,不同的分詞器適用于不同類型的內容。例如,standard分詞器會按單詞邊界進行分割,而whitespace分詞器則簡單地按空格分割文本。

示例代碼片段:

"tokenizer": "standard"

使用standard分詞器,一個句子會被分解成單個詞匯,同時去除標點符號。

詞元過濾(Token Filtering)

詞元過濾發生在分詞之后,這個階段可以對產生的詞元進行進一步的修改或處理。常見的操作包括轉換大小寫、刪除停用詞(stop words)、同義詞替換、詞干提取(stemming)或詞形還原(lemmatization)等。這些操作有助于減少索引的大小,提高搜索效率,同時增強搜索的靈活性和準確性。

示例代碼片段:

"filter": ["lowercase", "asciifolding"]
  • lowercase過濾器將所有詞元轉換為小寫,確保搜索時大小寫不敏感。
  • asciifolding過濾器將非ASCII字符轉換為它們的ASCII等價形式,比如將é轉換為e,這有助于國際化搜索的一致性。

綜合作用

通過這三個步驟,原始文本被轉換成了適合索引和搜索的形式。每個分析器都是由這三個組件的不同組合構成的,用戶可以根據具體需求定制分析器,以優化搜索體驗。例如,對于英文文檔,可能需要去除停用詞和執行詞干提取;而對于中文文檔,則可能需要利用專門的中文分詞器,如IK Analyzer。

理解分析器的工作機制對于優化Elasticsearch的搜索性能和準確性至關重要,它允許用戶精確控制文本如何被索引和搜索,從而滿足各種復雜的應用場景需求。

4.3.3 自定義分析器

Elasticsearch提供了豐富的內置分析器,如standard、whitespace、keyword等。若內置分析器不能滿足特定需求,可自定義分析器,通過組合字符過濾器(Character Filters)、分詞器(Tokenizer)和詞元過濾器(Token Filters)來定制化文本處理流程。

{"analysis": {"analyzer": {"my_custom_analyzer": {"type": "custom","tokenizer": "standard","char_filter": ["html_strip"],"filter": ["lowercase", "asciifolding"]}}}
}

小結

本章詳細介紹了Elasticsearch查詢與過濾的基礎與高級概念,從簡單到復雜的查詢構建,到深入全文檢索原理與分析器定制,為高效檢索數據提供了全面的理論與實踐指導。掌握這些技能,你將能更加靈活地在Elasticsearch中執行復雜的數據搜索任務。接下來的《第5章 數據聚合與分析》將進一步探討如何利用Elasticsearch強大的聚合功能,對數據進行深度分析與洞察。

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

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

相關文章

Java操作Excel最佳實踐

Java操作Excel最佳實踐 1、背景描述2、Apache POI簡介3、Java讀取Excel 1、背景描述 2、Apache POI簡介 官網&#xff1a;http://poi.apache.org/index.html 官方文檔&#xff1a;https://poi.apache.org/apidocs/index.html 3、Java讀取Excel 3.1、導入依賴 <dependency…

Qt——升級系列(Level Seven):事件、文件

目錄 Qt事件 事件介紹 事件的處理 按鍵事件 鼠標事件 定時器 事件分發器 事件過濾器 Qt文件 Qt文件概述 輸入輸出設備類 文件讀寫類 文件和目錄信息類 Qt事件 事件介紹 事件是應?程序內部或者外部產?的事情或者動作的統稱。在 Qt 中使??個對象來表??個事件。所有的 Qt …

工商業光伏項目如何快速開發?

一、前期調研與規劃 1、屋頂資源評估&#xff1a;詳細測量屋頂面積、承重能力及朝向&#xff0c;利用光伏業務管理軟件進行日照分析和發電量預測&#xff0c;確保項目可行性。 2、政策與補貼研究&#xff1a;深入了解當地政府對工商業光伏項目的政策支持和補貼情況&#xff0…

Java面試過程中遇到的問題

Java面試過程中遇到的問題 介紹工作經驗項目 介紹項目 為什么選用這個技術 報表服務怎么實現的 java框架 1、spring clound特性&#xff0c;組件有那些以及作用 springCloud是一套微服務組件&#xff0c; 常用的Eureka&#xff0c;Ribbon&#xff0c;Hystrix&#xff0c;Fe…

第三方支付平臺如何完美契合跨境電商?

在全球化的大潮中&#xff0c;跨境電商"Eurasia Boutique"的創始人艾米麗&#xff0c;帶著她的夢想和手工藝品&#xff0c;踏上了進入中國市場的征程。這是一個充滿挑戰和機遇的旅程&#xff0c;艾米麗和她的企業需要面對和解決一系列復雜的問題。 合規的門檻 艾米…

JVM原理(十四):JVM虛擬機運行時棧幀結構

Java虛擬機已方法作為最基本的執行單位。 棧幀&#xff1a;是支持Java虛擬機進行方法調用和方法執行背后的數據結構。 棧幀存儲了方法的 局部變量表、操作數棧、動態連接和放回地址等信息。 每一個方法的調用開始和執行結束&#xff0c;都對應著一個棧幀在虛擬機棧里面從入棧…

Linux文件與日志

目錄 1. Linux 文件系統 1.1 inode號 1.2 EXT類型文件恢復 1.3 xfs類型文件備份和恢復 2. 日志分析 2.1 日志類型 2.2日志配置文件 2.3 日志分析的重要性 在Linux系統中&#xff0c;文件和日志是管理和維護系統運行所不可或缺的。理解它們的工作原理和如何有效地管理和…

驅動開發:配置Visual Studio驅動開發環境

100編程書屋_孔夫子舊書網 配置驅動開發環境配置驅動開發模板配置驅動雙機調試 在正式開始驅動開發之前&#xff0c;需要自行搭建驅動開發的必要環境&#xff0c;首先我們需要安裝Visual Studio 2013這款功能強大的程序開發工具&#xff0c;在課件內請雙擊ISO文件并運行內部的…

2009-2024年第一季度上市公司華證ESG評級季度數據

2009-2024年第一季度上市公司華證ESG評級季度數據 1、時間&#xff1a;2009-2024年第一季度 2、指標&#xff1a;證券代碼、證券簡稱、評級日期、綜合評級、綜合得分、E評級、E得分、S評級、S得分、G評級、G得分、證監會行業&#xff08;新&#xff09;、同花順行業&#xff…

Visio框圖自動帶填充色原因及如何取消

0 Preface/Foreword Visio&#xff0c;Windows的一個流程圖&框圖制作工具。 1 新建Visio文件 1.1 圖形帶填充 新建Visio時候&#xff0c;如果選擇了模版&#xff0c;那么就后期使用的工具元素會自動填充。 帶來的弊端&#xff0c;在元素編輯文字時&#xff0c;如果此時不…

蘋果公司的Wifi定位服務(WPS)存在被濫用的風險

安全博客 Krebs on Security 2024年5月21日發布博文&#xff0c;表示蘋果公司的定位服務存在被濫用風險&#xff0c;通過 "竊取"WPS 數據庫&#xff0c;可以定位部隊行蹤。 相關背景知識 手機定位固然主要依賴衛星定位&#xff0c;不過在城市地區&#xff0c;密集的…

Perl 語言開發(五):循環語句

目錄 1. 循環語句概述 2. while 循環 2.1 基本語法 2.2 示例 2.3 無限循環 3. until 循環 3.1 基本語法 3.2 示例 3.3 無限循環 4. for 循環 4.1 基本語法 4.2 示例 4.3 嵌套循環 5. foreach 循環 5.1 基本語法 5.2 示例 5.3 遍歷哈希 6. 循環控制語句 6.1 …

新建Vue工程的幾種方法

文章目錄 使用CLI2 : vue-cli使用CLI3 : vue/cli使用 vue3構建 &#xff08;內置Vite&#xff09;直接使用Vite使用parcel (最少配置方案) 使用CLI2 : vue-cli vue-cli是針對構建vue的腳手架CLI2&#xff0c;只能新建vue2工程。 全局安裝vue-cli之后&#xff0c;構建vue2項目的…

03.C1W2.Sentiment Analysis with Na?ve Bayes

目錄 Probability and Bayes’ RuleIntroductionProbabilitiesProbability of the intersection Bayes’ RuleConditional ProbabilitiesBayes’ RuleQuiz: Bayes’ Rule Applied Nave Bayes IntroductionNave Bayes for Sentiment Analysis P ( w i ∣ c l a s s ) P(w_i|clas…

大數據領域的深度分析——AI是在幫助開發者還是取代他們?

在大數據領域&#xff0c;生成式人工智能&#xff08;AIGC&#xff09;的應用正在迅速擴展&#xff0c;改變了數據科學家和開發者的工作方式。本文將從大數據的專業視角&#xff0c;探討AI工具在這一領域的作用&#xff0c;以及它們是如何幫助開發者而非取代他們的。 1. 大數據…

npm 淘寶鏡像證書過期,錯誤信息 Could not retrieve https://npm.taobao.org/mirrors/node/latest

更換 npm 證書 問題描述報錯原因更換步驟1 找到 nvm 安裝目錄2 發現證書過期3 更換新地址4 保存后&#xff0c;重新安裝成功 問題描述 在使用 nvm 安裝新版本時&#xff0c;未成功&#xff0c;出現報錯&#xff1a; Could not retrieve https://npm.taobao.org/mirrors/node/l…

【postgresql】表操作

創建表 (CREATE TABLE): CREATE TABLE table_name ( column1 data_type constraint,column2 data_type constraint,... ); 插入數據 (INSERT INTO): INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...); 查詢數據 (SELECT): SELECT column1, c…

火山引擎數據飛輪實踐:在電商場景中,如何建設全鏈路數據血緣?

數據作為新型生產要素&#xff0c;正支撐企業的數智化轉型。但企業數字化建設也存在管理成本高、數據產品使用門檻高、數據資產價值不夠的問題&#xff0c;其原因在于業務和數據之間沒有形成雙向良性驅動。 結合新時代企業數字化轉型需求&#xff0c;火山引擎基于字節跳動十余…

IC燒錄員-帶著工程師的夢想遠航!

如果說軟件工程師是代碼程序的創造者&#xff0c;那么IC燒錄員就是把工程師們辛苦敲代碼&#xff0c;日夜辛勞的成果燒錄到芯片里面的實踐者&#xff0c;是他們&#xff0c;讓工程師們的夢想運用到實踐中&#xff0c;是他們帶著工程師的夢想遠航&#xff0c;他們的薪酬或許沒有…

第一節-k8s架構圖

一個Deployment&#xff0c;可以由多個不同Node下的Pod組成&#xff0c;每個Pod又由多個Container組成。 區分Deployment是用Labels(key:value)&#xff0c;區分Pod是用PodName&#xff0c;區分Container是用ContainerName。 一個Node可以包含多個不同Deployment中的pod&…