Docker容器部署Elasticsearch并配置分詞器的方法實(shí)現(xiàn)
一、環(huán)境準(zhǔn)備
1.1 拉取Elasticsearch鏡像
# 拉取指定版本(建議使用7.x或8.x穩(wěn)定版) docker pull elasticsearch:7.17.20 # 驗(yàn)證鏡像 docker images | grep elasticsearch
1.2 創(chuàng)建掛載目錄
# 創(chuàng)建數(shù)據(jù)、配置、插件、日志目錄
mkdir -p /opt/es/{data,config,plugins,logs}
# 設(shè)置權(quán)限(ES容器以u(píng)id:1000用戶運(yùn)行)
chown -R 1000:1000 /opt/es1.3 基礎(chǔ)配置文件
創(chuàng)建 /opt/es/config/elasticsearch.yml:
cluster.name: "docker-cluster" network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node xpack.security.enabled: false http.cors.enabled: true http.cors.allow-origin: "*"
二、啟動(dòng)Elasticsearch容器
2.1 運(yùn)行容器
docker run -d \ --name elasticsearch \ -p 9200:9200 \ -p 9300:9300 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -v /opt/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /opt/es/data:/usr/share/elasticsearch/data \ -v /opt/es/plugins:/usr/share/elasticsearch/plugins \ -v /opt/es/logs:/usr/share/elasticsearch/logs \ --restart=unless-stopped \ elasticsearch:7.17.20
2.2 驗(yàn)證啟動(dòng)
# 檢查容器狀態(tài) docker ps | grep elasticsearch # 測(cè)試ES服務(wù) curl http://localhost:9200
預(yù)期返回:
{
"name" : "node-1",
"cluster_name" : "docker-cluster",
"version" : { "number" : "7.17.20" }
}三、安裝IK分詞器
3.1 方法一:在線安裝(進(jìn)入容器)
# 進(jìn)入容器 docker exec -it elasticsearch /bin/bash # 在線安裝IK(版本需與ES完全一致) ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.20/elasticsearch-analysis-ik-7.17.20.zip # 退出并重啟 exit docker restart elasticsearch
3.2 方法二:離線安裝(推薦)
bash
# 1. 下載對(duì)應(yīng)版本的IK插件包 cd /opt/es/plugins wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.17.20/elasticsearch-analysis-ik-7.17.20.zip # 2. 解壓到ik目錄 unzip elasticsearch-analysis-ik-7.17.20.zip -d ik rm -f elasticsearch-analysis-ik-7.17.20.zip # 3. 設(shè)置權(quán)限 chown -R 1000:1000 /opt/es/plugins/ik # 4. 重啟容器 docker restart elasticsearch
3.3 方法三:Dockerfile構(gòu)建(生產(chǎn)推薦)
dockerfile
FROM elasticsearch:7.17.20 COPY elasticsearch-analysis-ik-7.17.20.zip /tmp/ RUN ./bin/elasticsearch-plugin install -b file:///tmp/elasticsearch-analysis-ik-7.17.20.zip
docker build -t elasticsearch-with-ik:7.17.20 . docker run -d --name elasticsearch -p 9200:9200 elasticsearch-with-ik:7.17.20
四、驗(yàn)證IK分詞器
4.1 查看已安裝插件
docker exec -it elasticsearch ./bin/elasticsearch-plugin list
預(yù)期輸出:analysis-ik
4.2 測(cè)試分詞效果
curl -X POST "http://localhost:9200/_analyze" -H "Content-Type: application/json" -d'
{
"analyzer": "ik_max_word",
"text": "中華人民共和國(guó)國(guó)徽"
}'ik_max_word(最細(xì)粒度)返回示例:
{
"tokens": [
{"token": "中華人民共和國(guó)", "position": 0},
{"token": "中華人民", "position": 1},
{"token": "中華", "position": 2},
{"token": "華人", "position": 3},
{"token": "人民共和國(guó)", "position": 4},
{"token": "人民", "position": 5},
{"token": "共和國(guó)", "position": 6},
{"token": "共和", "position": 7},
{"token": "國(guó)", "position": 8},
{"token": "國(guó)徽", "position": 9}
]
}# 測(cè)試ik_smart(最少切分)
curl -X POST "http://localhost:9200/_analyze" -H "Content-Type: application/json" -d'
{
"analyzer": "ik_smart",
"text": "中華人民共和國(guó)國(guó)徽"
}'五、自定義詞典配置
5.1 找到IK配置文件位置
# 查看插件目錄掛載位置 docker inspect elasticsearch | grep -A 10 "Mounts"
配置文件位于:/usr/share/elasticsearch/config/analysis-ik/
5.2 修改IKAnalyzer.cfg.xml
# 進(jìn)入容器 docker exec -it elasticsearch /bin/bash # 編輯配置文件 vi /usr/share/elasticsearch/config/analysis-ik/IKAnalyzer.cfg.xml
添加擴(kuò)展詞典配置:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 擴(kuò)展配置</comment>
<!-- 自定義擴(kuò)展詞典 -->
<entry key="ext_dict">ext_dict.dic</entry>
<!-- 自定義停用詞詞典 -->
<entry key="ext_stopwords">stopword.dic</entry>
</properties>5.3 創(chuàng)建自定義詞典文件
# 進(jìn)入配置目錄 cd /usr/share/elasticsearch/config/analysis-ik/ # 創(chuàng)建擴(kuò)展詞典(每行一個(gè)詞) echo "傳智播客" >> ext_dict.dic echo "奧力給" >> ext_dict.dic echo "人工智能" >> ext_dict.dic # 創(chuàng)建停用詞詞典 echo "的" >> stopword.dic echo "了" >> stopword.dic echo "呢" >> stopword.dic # 退出容器 exit # 重啟ES docker restart elasticsearch
5.4 掛載方式管理詞典(推薦)
# 1. 從容器復(fù)制默認(rèn)配置到宿主機(jī) docker cp elasticsearch:/usr/share/elasticsearch/config/analysis-ik ./analysis-ik-config # 2. 修改宿主機(jī)上的配置文件 vi ./analysis-ik-config/IKAnalyzer.cfg.xml echo "自定義詞匯" >> ./analysis-ik-config/ext_dict.dic # 3. 重新掛載啟動(dòng)(掛載配置目錄) docker run -d \ --name elasticsearch \ -p 9200:9200 \ -v /opt/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /opt/es/data:/usr/share/elasticsearch/data \ -v /opt/es/plugins:/usr/share/elasticsearch/plugins \ -v /opt/es/logs:/usr/share/elasticsearch/logs \ -v $(pwd)/analysis-ik-config:/usr/share/elasticsearch/config/analysis-ik \ elasticsearch:7.17.20
六、驗(yàn)證自定義詞典
curl -X POST "http://localhost:9200/_analyze" -H "Content-Type: application/json" -d'
{
"analyzer": "ik_max_word",
"text": "傳智播客Java就業(yè)率超過(guò)95%,奧力給!"
}'如果"傳智播客"和"奧力給"被正確識(shí)別為一個(gè)完整詞元,說(shuō)明自定義詞典生效。
七、常見(jiàn)問(wèn)題與排錯(cuò)
7.1 容器啟動(dòng)后閃退
# 查看錯(cuò)誤日志 docker logs elasticsearch # 常見(jiàn)原因: # 1. IK版本與ES版本不匹配 → 重新下載匹配版本 # 2. 插件目錄權(quán)限不足 → chown -R 1000:1000 /opt/es/plugins # 3. 內(nèi)存不足 → 調(diào)整ES_JAVA_OPTS=-Xms256m -Xmx256m
7.2 分詞器不生效
# 檢查插件是否安裝成功 docker exec -it elasticsearch ./bin/elasticsearch-plugin list # 檢查文件編碼(必須是UTF-8,無(wú)BOM) file -bi /opt/es/plugins/ik/config/*.dic
7.3 自定義詞典未加載
# 查看ES日志確認(rèn)詞典加載 docker logs elasticsearch 2>&1 | grep -i "dic" # 預(yù)期輸出: # [INFO] loading ext_dict.dic # [INFO] loading stopword.dic
八、快速參考
| 操作 | 命令 |
|---|---|
| 啟動(dòng)ES | docker start elasticsearch |
| 停止ES | docker stop elasticsearch |
| 重啟ES | docker restart elasticsearch |
| 查看日志 | docker logs -f elasticsearch |
| 進(jìn)入容器 | docker exec -it elasticsearch /bin/bash |
| 測(cè)試分詞 | curl -X POST "localhost:9200/_analyze" -H "Content-Type: application/json" -d'{...}' |
到此這篇關(guān)于Docker容器部署Elasticsearch并配置分詞器的文章就介紹到這了,更多相關(guān)Docker部署Elasticsearch配置分詞器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker安裝Elasticsearch的實(shí)現(xiàn)示例
- Docker安裝ElasticSearch及掛載目錄實(shí)現(xiàn)過(guò)程
- docker下elasticsearch安裝證書(shū)全過(guò)程
- 在docker容器中elasticsearch的導(dǎo)入導(dǎo)出方式
- 使用Docker查看Elasticsearch錯(cuò)誤日志的詳細(xì)步驟
- Docker 部署 Elasticsearch 9 的搭建過(guò)程
- Docker搭建Elasticsearch集群和Kibana全過(guò)程
- Docker安裝Elasticsearch?8.x的實(shí)現(xiàn)示例
- Docker中安裝ElasticSearch+Kibana+Logstash(ELK)實(shí)踐記錄
- docker下遷移elasticsearch問(wèn)題以及解決方案
相關(guān)文章
docker容器啟動(dòng)不起來(lái)的若干問(wèn)題解決
本文主要介紹了docker容器啟動(dòng)不起來(lái)的若干問(wèn)題解決,文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
在Jenkins Docker容器中切換到root用戶并解決權(quán)限問(wèn)題的完整指南
在使用Jenkins構(gòu)建和部署項(xiàng)目時(shí),可能會(huì)遇到一些操作需要root用戶權(quán)限,比如安裝軟件包、創(chuàng)建軟鏈接等,在Jenkins的Docker容器中,默認(rèn)是以非特權(quán)用戶運(yùn)行的,這意味著你可能會(huì)遇到權(quán)限不足的問(wèn)題,本文將教你如何在Jenkins容器中切換到root用戶,需要的朋友可以參考下2025-08-08
docker部署firefox瀏覽器實(shí)現(xiàn)遠(yuǎn)程訪問(wèn)
在使用docker時(shí),默認(rèn)情況下只能在本地進(jìn)行訪問(wèn),本文就來(lái)介紹一下docker部署firefox瀏覽器實(shí)現(xiàn)遠(yuǎn)程訪問(wèn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
docker-compose中l(wèi)ink和external_links的區(qū)別及說(shuō)明
拆分docker-compose.yml導(dǎo)致depends_on、links和external網(wǎng)絡(luò)配置失效,因compose限制及Portainer命名沖突,解決方案為使用external_links或手動(dòng)創(chuàng)建網(wǎng)絡(luò)2025-09-09
使用Docker開(kāi)發(fā)python Web 應(yīng)用
本文給大家詳細(xì)講解了如何使用Docker開(kāi)發(fā)python應(yīng)用,特別是WEB應(yīng)用的步驟,Docker本質(zhì)上提供了非常輕量化的VMs,我們可以使用其創(chuàng)建一個(gè)高標(biāo)準(zhǔn)隔離并能大大減少失配的開(kāi)發(fā)和產(chǎn)品環(huán)境。2016-10-10

