docker 配置 elasticsearch、ik分詞器


## 創建一個 network 方便其他服務連接,比如 Kibana
# docker network create elasticSearchNetwork

# docker run -d --name elasticsearch --net elasticSearchNetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.7.0

## 將本地配置文件映射到容器,方便日后修改配置
# mkdir ~/Desktop/elasticsearch

# docker cp 容器ID:/usr/share/elasticsearch/config ~/Desktop/elasticsearch
# docker cp 容器ID:/usr/share/elasticsearch/data ~/Desktop/elasticsearch
# docker cp 容器ID:/usr/share/elasticsearch/logs ~/Desktop/elasticsearch

## 關閉容器后重啟即可,config、data、logs 都在宿主機,方便查看和修改配置
## 比如常用的 ik 分詞器,下載對應版本,然后放在 plugins/ik 目錄下即可使用
docker run -d --name elasticsearch --net elasticSearchNetwork \
-e "TZ=Asia/Shanghai" \
-v ~/Desktop/elasticsearch/config:/usr/share/elasticsearch/config \
-v ~/Desktop/elasticsearch/data:/usr/share/elasticsearch/data \
-v ~/Desktop/elasticsearch/logs:/usr/share/elasticsearch/logs \
-v ~/Desktop/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.7.0

## http://localhost:9200

附錄:
使用 Kibana 連接 elasticsearch

## 注意這里的 network 要使用剛剛 elasticsearch 創建的網絡
## kibana 的版本也要和 elasticsearch 一致,防止出現奇怪的問題
# docker run -d --name kibana --net elasticSearchNetwork -p 5601:5601 kibana:7.7.0

## 同樣的,將 docker 中的配置文件拷貝到宿主機,方便配置
# ~/Desktop/kibana
# docker cp 090b7ba075fdffaffa636f61df9b188f624a94abc127573c23af5451e3d7de76:/usr/share/kibana/config ~/Desktop/kibana

## 修改配置文件 kibana.yml 添加一行,配置 Kibana 為中文
i18n.locale: "zh-CN"

## 關閉容器后重啟即可
docker run -d --name kibana --net elasticSearchNetwork \
-v ~/Desktop/kibana/config:/usr/share/kibana/config \
-p 5601:5601 kibana:7.7.0

## http://localhost:5601

配置 ik 分詞器自定義詞典

在 ik 分詞器的 config/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">location</entry>
 	<!--用戶可以在這里配置遠程擴展停止詞字典-->
	<entry key="remote_ext_stopwords">http://xxx.com/xxx.dic</entry>
</properties>

其中 location 是指一個 url,比如 http://yoursite.com/customDict.txt,該請求只需滿足以下兩點即可完成分詞熱更新。
1.該 http 請求需要返回兩個頭部(header),一個是 Last-Modified,一個是 ETag,這兩者都是字符串類型,只要有一個發生變化,該插件就會去抓取新的分詞進而更新詞庫。
2.該 http 請求返回的內容格式是一行一個分詞,換行符用 \n 即可。

可以將需自動更新的熱詞放在一個 UTF-8 編碼的 .txt 文件里,放在 nginx 下,只要更新這個 txt 文檔,ik 分詞器就會讀取新的分詞規則,從而做到不停止 es 從而在線更新分詞規則。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM