ElasticSearch入門二(安裝IK分詞器)

分詞器

在我們match查詢的時候,ElasticSearch會默認給我們創建通過分詞器創建倒排索引,ElasticSearch 默認分詞器是standard分詞器,我們來看看對英文的分詞效果

# 分詞查看語法
GET /_analyze
{
  "analyzer": "分詞器", 
  "text": "分詞語句"
}

在這裏插入圖片描述
可以看到基本是以單詞作爲拆分,如果是中文呢。來看看效果
在這裏插入圖片描述
可以看到基本不會分詞,而我們大多數存的都是中文,如何添加中文分詞器呢

主流的就是 IK Analysis分詞器
ik分詞器分爲兩種:

  • ik_max_word: 會將文本做最細粒度的拆分
    比如會將“中華人民共和國國歌”拆分爲“中華人民共和國,中華人民,中華,華人,人民共和國,人民,人,民,共和國,共和,和,國國,國歌”,會窮盡各種可能的組合;
  • ik_smart: 會做最粗粒度的拆分
    比如會將“中華人民共和國國歌”拆分爲“中華人民共和國,國歌”。

安裝 IK Analysis

github下載地址
https://github.com/medcl/elasticsearch-analysis-ik
在這裏插入圖片描述

下載與自己es想對應的版本分詞器即可
在這裏插入圖片描述

等待編譯完成後,在target/release目錄下會生產名爲elasticsearch-analysis-ik-7.4.0.zip的文件,如下所示:
在這裏插入圖片描述
然後將 elasticsearch-analysis-ik-6.5.0.zip 文件解壓
在這裏插入圖片描述
在 elasticsearch-7.7.1\plugins 中 創建 ik分詞器將這些文件copy過去
在這裏插入圖片描述

重啓 elasticsearch,失敗,報錯,查看日誌

在這裏插入圖片描述

ik編譯出來的版本不支持ElasticSearch 7.7.1,修改下IK的配置文件就好了
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

重啓 ElasticSearch

測試

在這裏插入圖片描述
在這裏插入圖片描述

es分詞大致安裝就是如此吧對

ik配置文件說明

在這裏插入圖片描述

  • main.dic k原生內置的中文詞庫
  • quantifier.dic 單位相關的詞
  • surname.dic 中國的姓氏

自定義詞庫

我們重點看一下 IKAnalyzer.cfg.xml 這個配置類,這個類用於配置我們自定義的詞庫

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
	<comment>IK Analyzer 擴展配置</comment>
	<!--用戶可以在這裏配置自己的擴展字典 -->
	<entry key="ext_dict">custom/mydict.dic;custom/single_word_low_freq.dic</entry>
	 <!--用戶可以在這裏配置自己的擴展停止詞字典-->
	<entry key="ext_stopwords">custom/ext_stopword.dic</entry>
	<!--用戶可以在這裏配置遠程擴展字典 -->
	<!-- <entry key="remote_ext_dict">words_location</entry> -->
	<!--用戶可以在這裏配置遠程擴展停止詞字典-->
	<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>

在這裏插入圖片描述

配置分詞和停用詞後重啓 elasticsearch 生效

熱更新

  1. 修改ik分詞器源碼,然後手動支持從mysql中每隔一定時間,自動加載新的詞庫
  2. 基於ik分詞器原生支持的熱更新方案,部署一個web服務器,提供一個http接口,通過modified和tag兩個http響應頭,來提供詞語的熱更新

這裏自行百度不作演示

使用

創建索引mapping的時候指定分詞器

PUT /my_index 
{
  "mappings": {
    "my_type": {
      "properties": {
        "text": {
          "type": "text",
          "analyzer": "ik_max_word"
        }
      }
    }
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章