環境:elasticsearch 6.2.4 + kibana 6.2.4 + ik 6.2.4elasticsearch預設也能對中文進行分詞。
我們先來看看自帶的中文分詞效果:
get /_analyze
結果:
,,,
,,
]}
我們發現,是按照每個字進行分詞的。這種在實際應用裡肯定達不到想要的效果。當然,如果是日誌搜尋,使用自帶的就足夠了。
接下來,我們安裝ik分詞外掛程式進行分詞。analyzer=default
其實呼叫的是standard
分詞器。
首先需要說明的是,ik外掛程式必須和 elasticsearch 的版本一致,否則不相容。
plugin-descriptor.properties然後重啟 elasticsearch。
安裝方法2:
./usr/local/elk/elasticsearch-6.2.4/bin/elasticsearch-plugin install
./usr/local/elk/elasticsearch-6.2.4/bin/elasticsearch-plugin install file:///tmp/elasticsearch-analysis-ik-6.2.4.zip
然後重啟 elasticsearch。
ik支援兩種分詞模式(analyzer):
支援兩種tokenizer:
注:analyzer由tokenizer組成。接下來,我們測算ik分詞效果和自帶的有什麼不同:
結果:
,
]}
再試一下ik_max_word
的效果:
,,,
,]}
示例:
}}
注:這裡設定search_analyzer
與analyzer
相同是為了確保搜尋時和索引時使用相同的分詞器,以確保查詢中的術語與反向索引中的術語具有相同的格式。如果不設定search_analyzer
,則search_analyzer
與analyzer
相同。詳細請查閱:
我們也可以定義自己的詞典供ik使用。比如:
結果:
,
,]}
我們希望朝陽公園
作為乙個整體,這時候可以把該詞加入到自己的詞典裡。
新建自己的詞典只需要簡單幾步就可以完成:
1、在elasticsearch-6.2.4/config/analysis-ik/
目錄增加乙個my.dic
:
$ touch my.dic
$ echo 朝陽公園 > my.dic
$ cat my.dic
朝陽公園
$ head -n 5 main.dic
一一枚舉
一一對應
一一道來
一丁一丁不識
2、然後修改elasticsearch-6.2.4/config/analysis-ik/ikanalyzer.cfg.xml
檔案:
<?xml version="1.0" encoding="utf-8"?>
ik analyzer 擴充套件配置
my.dic
增加了my.dic
,然後重啟es。我們再看一下效果:
get /_analyze
結果:
,
]}
說明自定義詞典生效了。如果有多個詞典,使用英文分號隔開:
my.dic;custom/single_word_low_freq.dic
另外,我們看到配置裡還有個擴充套件停止詞字典
,這個是用來輔助斷句的。我們可以看一下自帶的乙個擴充套件停止詞字典
:
$ head -n 5 extra_stopword.dic也了
仍從以
也就是ik分詞器遇到這些詞就認為前面的詞語不會與這些詞構成詞語。
ik分詞也支援遠端詞典,遠端詞典的好處是支援熱更新。詞典格式和本地的一致,都是一行乙個分詞(換行符用\n
),還要求填寫的url滿足:
該 http 請求需要返回兩個頭部(header),乙個是 last-modified,乙個是 etag,這兩者都是字串型別,只要有乙個發生變化,該外掛程式就會去抓取新的分詞進而更新詞庫。
詳見: 熱更新 ik 分詞使用方法 部分。
注意:上面的示例裡我們改的是es自帶了許多內建的analyzer分析器,無需配置就可以直接在index中使用:elasticsearch-6.2.4/config/analysis-ik/
目錄下內容,是因為ik是通過方法2裡elasticsearch-plugin
安裝的。如果你是通過解壓方式安裝的,那麼ik配置會在plugins目錄,即:elasticsearch-6.2.4/plugins/analysis-ik/config
。也就是說外掛程式的配置既可以放在外掛程式所在目錄,也可以放在elasticsearch的config目錄裡面。
詳見文件:
1、medcl/elasticsearch-analysis-ik: the ik analysis plugin integrates lucene ik analyzer into elasticsearch, support customized dictionary.
2、elesticsearch ik中文分詞使用詳解 - xsdxs的部落格 - csdn部落格
Elasticsearch探索實踐(一)
elasticsearch是乙個開源的分布式 restful 風格的搜尋和資料分析引擎,它的底層是開源庫apache lucene。lucene 可以說是當下最先進 高效能 全功能的搜尋引擎庫 無論是開源還是私有,但它也僅僅只是乙個庫。為了充分發揮其功能,你需要使用 j a 並將 lucene 直接...
elasticsearch配置詳解
elasticsearch的config資料夾裡面有兩個配置檔案 elasticsearch.yml和logging.yml,第乙個是es的基本配置檔案,第二個是日誌配置檔案,es也是使用log4j來記錄日誌的,所以logging.yml裡的設定按普通log4j配置檔案來設定就行了。下面主要講解下e...
誰在使用Elasticsearch
github github使用elasticsearch搜尋20tb的資料,包括13億的檔案和1300億行的 這個不用介紹了吧,碼農們都懂的,github在2013年1月公升級了他們的 搜尋,由solr轉為elasticsearch,目前集群規模為26個索引儲存節點和8個客戶端節點 負責處理搜尋請求...