示例: 對以下三個文件去除停用詞後構造倒排索引
倒排索引-查詢過程
查詢包含「搜尋引擎」的文件
通過倒排索引獲得「搜尋引擎」對應的文件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的資訊,請根據實...