Elasticsearch 6 x 倒排索引與分詞

2021-09-11 12:36:06 字數 2445 閱讀 8661

示例: 對以下三個文件去除停用詞後構造倒排索引

倒排索引-查詢過程

查詢包含「搜尋引擎」的文件

通過倒排索引獲得「搜尋引擎」對應的文件id列表,有1,3

通過正排索引查詢1和3的完整內容

返回最終結果

倒排索引-組成

單詞詞典(term dictionary)

單詞詞典的實現一般用b+樹,b+樹構造的視覺化過程**: b+ tree visualization

關於b樹和b+樹

維基百科-b樹

維基百科-b+樹

b樹和b+樹的插入、刪除**詳解

倒排列表(posting list)

b+樹內部結點存索引,葉子結點存資料,這裡的 單詞詞典就是b+樹索引,倒排列表就是資料,整合在一起後如下所示

note: b+樹索引中文和英文怎麼比較大小呢?unicode比較還是拼音呢?

es儲存的是乙個json格式的文件,其中包含多個字段,每個欄位會有自己的倒排索引

分詞是將文字轉換成一系列單詞(term or token)的過程,也可以叫文字分析,在es裡面稱為analysis

分詞器分詞器是es中專門處理分詞的元件,英文為analyzer,它的組成如下:

分詞器呼叫順序

es提供了乙個可以測試分詞的api介面,方便驗證分詞效果,endpoint是_analyze

post test_index/doc

post test_index/_analyze

複製**

post _analyze

複製**

es自帶的分詞器有如下:

****** analyzer

whitespace analyzer

stop analyzer

keyword analyzer

pattern analyzer

language analyzer

示例:停用詞分詞器

post _analyze

複製**

結果

,,,

,,,,

,]}

複製**

常見分詞系統

安裝ik中文分詞外掛程式

# 在elasticsearch安裝目錄下執行命令,然後重啟es

bin/elasticsearch-plugin install

bin/elasticsearch-plugin install file:///path/to/elasticsearch-analysis-ik-6.3.0.zip

複製**

post _analyze

# 結果

, ,,,

,,,]}

複製**

post _analyze

# 結果

, ,,,

,,,,

,]}

複製**

當自帶的分詞無法滿足需求時,可以自定義分詞,通過定義character filters、tokenizer和token filters實現

character filters

會影響後續tokenizer解析的position和offset資訊

character filters測試

post _analyze

# 結果

]}複製**

tokenizers

tokenizers 測試

post _analyze

# 結果

, ,

]}複製**

token filters

token filters測試

post _analyze

]}# 結果

, ,,]}

複製**

自定義分詞

自定義分詞需要在索引配置中設定 char_filter、tokenizer、filter、analyzer等

自定義分詞示例:

put test_index_1}}

}}複製**

自定義分詞器測試
post test_index_1/_analyze

# 結果

, ,

]}複製**

分詞使用說明

分詞會在如下兩個時機使用:

分詞使用建議

elasticsearch 官方文件

慕課網 elastic stack從入門到實踐

ElasticSearch6 x 之分組聚合

資料準備 新建索引my index,初始化資料 建立my index索引 put 請求 索引資料初始化 put請求 persion 1 put請求 persion 2 put請求 persion 3 put請求 persion 4 put請求 persion 5 put請求 persion 6 分組...

Elasticsearch6 X 去重統計詳解

elasticsearch有沒有類似mysql的distinct的去重功能呢?1 如何去重計數?類似mysql select distinct count 1 from my table 2 如何獲取去重結果。類似mysql select distinct name,age from users 1...

elasticsearch 7 X 部署文件

elasticsearch 7.2.1 kibana 7.2.1 最新版為7.3.0 以下文件是根據7.3.0書寫,7.2.1通用 開發 測試環境 cpu 8 核 記憶體8g 硬碟200g 3臺 生產環境 待討論確定 如已設定則可無須考慮該部署準備操作,文件中所有涉及到ip port的資訊,請根據實...