ElasticSearch 中的中文分詞器以及索引基本操作詳解

2020-12-23 計算機java編程

1.ElasticSearch 分詞器介紹

1.1 內置分詞器

ElasticSearch 核心功能就是數據檢索,首先通過索引將文檔寫入 es。查詢分析則主要分為兩個步驟:

詞條化:分詞器將輸入的文本轉為一個一個的詞條流。過濾:比如停用詞過濾器會從詞條中去除不相干的詞條(的,嗯,啊,呢);另外還有同義詞過濾器、小寫過濾器等。ElasticSearch 中內置了多種分詞器可以供使用。

內置分詞器:

1.2 中文分詞器

在 Es 中,使用較多的中文分詞器是 elasticsearch-analysis-ik,這個是 es 的一個第三方插件,代碼託管在 GitHub 上。

1.2.1 安裝

執行如下命令即可:

1.2.2 測試

es 重啟成功後,首先創建一個名為 test 的索引:

接下來,在該索引中進行分詞測試:

1.2.3 自定義擴展詞庫

1.2.3.1 本地自定義

在 es/plugins/ik/config 目錄下,新建 ext.dic 文件(文件名任意),在該文件中可以配置自定義的詞庫。

如果有多個詞,換行寫入新詞即可。

然後在 es/plugins/ik/config/IKAnalyzer.cfg.xml 中配置擴展詞典的位置:

1.2.3.2 遠程詞庫

也可以配置遠程詞庫,遠程詞庫支持熱更新(不用重啟 es 就可以生效)。

熱更新只需要提供一個接口,接口返回擴展詞即可。

具體使用方式如下,新建一個 Spring Boot 項目,引入 Web 依賴即可。然後在 resources/stastic 目錄下新建 ext.dic 文件,寫入擴展詞:

接下來,在 es/plugins/ik/config/IKAnalyzer.cfg.xml 文件中配置遠程擴展詞接口:

配置完成後,重啟 es ,即可生效。

熱更新,主要是響應頭的 Last-Modified 或者 ETag 欄位發生變化,ik 就會自動重新加載遠程擴展辭典。

2. ElasticSearch 索引管理

啟動一個 master 節點和兩個 slave 節點進行測試(參考第二集的視頻搭建)。

2.1 新建索引

2.1.1 通過 head 插件新建索引

在 head 插件中,選擇 索引選項卡,然後點擊新建索引。新建索引時,需要填入索引名稱、分片數以及副本數。

索引創建成功後,如下圖:

0、1、2、3、4 分別表示索引的分片,粗框表示主分片,細框表示副本(點一下框,通過 primary 屬性可以查看是主分片還是副本)。.kibana 索引只有一個分片和一個副本,所以只有 0。

2.1.2 通過請求創建

可以通過 postman 發送請求,也可以通過 kibana 發送請求,由於 kibana 有提示,所以這裡採用 kibana。

創建索引請求:

PUTbook

創建成功後,可以查看索引信息:

需要注意兩點:

索引名稱不能有大寫字母

索引名是唯一的,不能重複,重複創建會出錯

2.2 更新索引

索引創建好之後,可以修改其屬性。

例如修改索引的副本數:

修改成功後,如下:

更新分片數也是一樣。

2.3 修改索引的讀寫權限

索引創建成功後,可以向索引中寫入文檔:

寫入成功後,可以在 head 插件中查看:

默認情況下,索引是具備讀寫權限的,當然這個讀寫權限可以關閉。

例如,關閉索引的寫權限:

關閉之後,就無法添加文檔了。關閉了寫權限之後,如果想要再次打開,方式如下:

其他類似的權限有:

blocks.writeblocks.readblocks.read_only2.4 查看索引

head 插件查看方式如下:

請求查看方式如下:

GETbook/_settings

也可以同時查看多個索引信息:

GETbook,test/_settings

也可以查看所有索引信息:

GET_all/_settings

2.5 刪除索引

head 插件可以刪除索引:

請求刪除如下:

DELETEtest

刪除一個不存在的索引會報錯。

5.6 索引打開/關閉

關閉索引:

POSTbook/_close

打開索引:

POSTbook/_open

當然,可以同時關閉/打開多個索引,多個索引用 , 隔開,或者直接使用 _all 代表所有索引。

2.7 複製索引

索引複製,只會複製數據,不會複製索引配置。

複製的時候,可以添加查詢條件。

2.8 索引別名

可以為索引創建別名,如果這個別名是唯一的,該別名可以代替索引名稱。

添加結果如下:

將 add 改為 remove 就表示移除別名:

查看某一個索引的別名:

GET/book/_alias

查看某一個別名對應的索引(book_alias 表示一個別名):

GET/book_alias/_alias

可以查看集群上所有可用別名:

GET/_alias

相關焦點

  • ElasticSearch 中的中文分詞器該怎麼玩?
    4.1 內置分詞器ElasticSearch 核心功能就是數據檢索,首先通過索引將文檔寫入 es。查詢分析則主要分為兩個步驟:過濾:比如停用詞過濾器會從詞條中去除不相干的詞條(的,嗯,啊,呢);另外還有同義詞過濾器、小寫過濾器等。
  • 一次有趣的Elasticsearch+矩陣變換聚合實踐
    窮舉法計算複雜度Elasticsearch雖然提供了聚合能力,但不支持在一次聚合過程中完成去重與分組統計,也就是二次聚合,這是ES局限,也是ES定位。數據同步到Elasticsearch中,一個月一個索引,也只要更新最近的2個索引。Elasticsearch更新索引也很方便,採用別名切換方式,可在毫秒間完成,ES這個優點有效的避免了業務系統查詢停頓空白問題。業務查詢選擇Elasticsearch做為查詢引擎是非常正確的,得益於Elasticsearch高效的查詢機制以及高效的聚合能力。
  • ElasticSearch新版功能驚人
    可搜索的快照在許多場景中,數據以指數級的速度增長。時間序列數據(例如日誌,指標,跟蹤和安全事件)尤其如此。在時間序列數據中,Elasticsearch存儲的最新數據非常有價值。該數據可驅動警報,機器學習檢測,開發工作流以及監視安全事件。所有這些數據保存在高性能實例上卻是經濟代價非常之大。
  • Elasticsearch 7.10.0發布,基於Apache Lucene 8.7.0
    其他功能和可用性增強搜索時間點(PIT)在Elasticsearch中查詢索引時,實際上是在給定的時間點搜索數據。如果查詢返回前10%的結果,如何查詢其他90%的結果?在大多數可觀察性和安全性使用案例中,索引不斷變化,因此發送另一個查詢將返回不同的結果,因為索引或數據已更改。
  • FlinkSQL結合Kafka、Elasticsearch、Kibana實時分析電商用戶行為
    使用Flink SQL結合Kafka、Elasticsearch、Kibana實時分析電商用戶行為 (Use flink sql to combine kafka, elasticsearch and kibana, real-time analysis of e-commerce user behavior.)
  • Java中文語言處理HanLP
    //HanLP中有一系列「開箱即用」的靜態分詞器,以 Tokenizer 結尾List<Term> stermList = HanLP.segment("商品和服務");System.out.println(stermList);
  • MySQL索引與索引優化
    MySQL的基本架構示意圖MySQL索引就是用於優化器上。索引:MySQL官方對於索引的定義為:索引是幫助MySQL高效獲取數據的數據結構。即可以理解為:索引是數據結構。為了減小IO操作數量,一般把一個節點的大小設計成最小讀寫單位的大小,MySQL的存儲引擎InnoDB的最小讀寫單位是16K一頁,B+樹中個節點為或的倍數最為合適。
  • 要學好英語,英語Search me真的不是中文「搜我」
    要學好英語,英語Search me真的不是中文「搜我」對於長期處於「非英語語言環境」中的我們「學習」英語,我們必須思考一個問題:我們通過某句英語的學習究竟是為了訓練和增強自己用英語記憶英語的能力呢,還是僅僅是為了「用」中文「懂得」某句英語「什麼意思」?
  • MySQL 8.0 中的索引可以隱藏了…
    MySQL 資料庫默認創建的索引都是可見的,要顯式控制一個索引的可見性,可以在 CREATE TABLE,CREATE INDEX 或 ALTER TABLE 的索引定義命令中使用 VISIBLE 或 INVISIBLE 關鍵字。
  • Pro Sound Effects 發布 Search 音效搜索和管理軟體
    它可以讓你索引和組織音頻文件以及錄音,通過關鍵詞快速搜索音效,並直接拖入任意編輯軟體。原 YouTube 視頻連結:https://youtu.be/C5JOlIJxG_M主要特性:索引本地音頻文件:無限記錄和資料庫。搜索聲音:組合關鍵詞 + 布爾搜索和預測搜索。
  • 漲知識了|期刊索引的SCI、SSCI、EI、ISTP、ISSHP…是什麼意思?
    ISI的領域涉及22000種期刊、3100萬件專利、60000個會議錄、5500專業網站、5000本學術專著、200萬化學結構、230多個學科的深度索引,以及100年的科學引文索引。目前,ISI的主要產品有兩類,一是平面索引產品;二是網絡產品。
  • 專欄| 中文NLP難於英文?從語言學角度看中文NLP、NLU難在哪裡
    作者:竹間智能自然語言與深度學習小組長期以來,中文自然語言處理(NLP)的研究遭遇瓶頸,其中一個重要原因就是中文的語言學基本無法遷移到已有的成熟的深度學習模型中,這也是中文 NLP 難於英文的重要原因之一。而竹間智能在自然語言處理的研究中,結合深度學習、語言學和心理學等,通過 NLU 來彌補傳統中文 NLP 在語言理解上的不足,取得了不錯的成果。
  • 從原理到優化,深入淺出資料庫索引 - 計算機java編程
    這樣的話,索引查找過程中就要產生磁碟I/O消耗,相對於內存存取,I/O存取的消耗要高几個數量級,所以評價一個數據結構作為索引的優劣最重要的指標就是在查找過程中磁碟I/O操作次數的漸進複雜度。換句話說,索引的結構組織要儘量減少查找過程中磁碟I/O的存取次數。假如每個盤塊可以正好存放一個B樹的結點(正好存放2個文件名)。
  • Christina問我:你都是如何設計索引的?
    今天就跟大家聊聊MySQL中的索引以及如何設計索引,使用索引才能提降低接口的RT,提高用戶體檢。MySQL中的索引MySQL中的InnoDB引擎使用B+Tree結構來存儲索引,可以儘量減少數據查詢時磁碟IO次數,同時樹的高度直接影響了查詢的性能,一般樹的高度維持在 3~4 層。
  • 文覽匯意|elastic、resilient、flexible、supple的區別與用法
    >elastic.This option is probably the most elastic way of working.這可能是最靈活的工作方式。也可表示人在遇到災難或不愉快的情況後,能迅速從中恢復過來,即「適應力強的,堅韌的」。