|
上一篇,我們介紹了 ES 文檔的基本 CURE 和批量操作。我們都知道倒排索引是搜索引擎非常重要的一種數(shù)據(jù)結構,什么是倒排索引,倒排索引的原理是什么。 1 索引過程 在講解倒排索引前,我們先了解索引創(chuàng)建,下圖是 Elasticsearch 中數(shù)據(jù)索引過程的流程。
從上圖可以看到,文檔未在 ES 中進行索引,而是 由 Analyzer 組件對其執(zhí)行一些操作并將其拆分為 token/term。然后將這些術語作為倒排索引存儲在磁盤中。假設我們有兩個名為 name 和 age 字段,當要將文檔索引到 ES 時,Analyzers 組件 以某些定界符(有默認定界符,例如空格,句號等)將它們分割開獲取 token,再對每個 token 應用特定的過濾器。經(jīng)過分析的這些標記稱為 term。然后將這些 term 針對該字段)存儲在倒排列表中。 2 倒排索引 2.1 正排與倒排索引 一般在我們閱讀圖書,我們會根據(jù)目錄快速定位想要閱讀的章節(jié),過了一段時間,你想要的回顧之前某一個知識點,你發(fā)現(xiàn)從目錄難以查找到對應的地方,這時你可能就會從索引頁從去查找對應內(nèi)容索引,從而找到頁碼。
搜索引擎其實跟我們的使用圖書很相似,下面我來對圖書和搜索引擎進行一個簡單的類比,來看一下搜素引擎中正排和倒排索引。
2.2 倒排索引的核心組成 舉個例子,假設我們有 3 個文檔:
經(jīng)過分析,文件中的術語如下
倒排列表的元數(shù)據(jù)結構:
其中:
則它們生成的倒排索引
ES 也可以指定對某些字段不做索引
3 總結 在之前文章說了 ES 的文檔是基于 JSON 格式,在我們創(chuàng)建索引的時候,對每一個文檔記錄對應索引相關的信息。在對倒排索引進行搜索時,查詢單詞是否在單詞字典,獲取單詞在倒排列表的指針,獲取有該單詞單詞的文檔 Id 列表,通過 ES 的倒排索引,我們輕易對全文進行快速搜素。 系列文章 【Elasticsearch 7 搜索之路】(一)什么是 Elasticsearch? |
|
|