Elasticsearch - Docker安裝Elasticsearch8.12.2

王谷雨發表於2024-03-15

前言

最近在學習 ES,所以需要在伺服器上裝一個單節點的 ES

伺服器環境:centos 7.9

安裝

下載映象

目前最新版本是 8.12.2

docker pull docker.elastic.co/elasticsearch/elasticsearch:8.12.2

建立配置

新增配置檔案 elasticsearch.yml

http.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack.security.enabled: true

解釋一下,前三行是開啟遠端訪問和跨域,最後一行是開啟密碼訪問

Networking | Elasticsearch Guide [8.12] | Elastic

建立資料掛載目錄

在宿主機建立容器的掛載目錄,我的目錄如下

/home/elasticsearch
├── config
│ ├── analysis-ik
│ └── elasticsearch.yml
├── data
└── plugins

上一節說的配置檔案 elasticsearch. yml 放在 /home/elasticsearch/config/elasticsearch. yml

建立 config/analysis-ik 、data、plugins 目錄

這裡需要重點說下 analysis-ik 資料夾,這是用來存放 ik 分詞器的配置檔案的目錄,裡面的檔案由容器建立,所以需要分配與容器相同的許可權(相同的使用者)

不知道怎麼弄的看以下步驟

# 啟動臨時的docker容器
docker run --name es01  -e "discovery.type=single-node" -t docker.elastic.co/elasticsearch/elasticsearch:8.12.2
# 檢視使用者
ps -ef | grep elasticsearch
# 檢視使用者id
id 使用者名稱
# 刪除臨時的docker容器
docker kill es01 && docker rm es01
# 修改資料夾許可權(uid就是使用者id,自行替換)
sudo chown -R uid:uid /home/elasticsearch/config/analysis-ik

啟動 docker 容器

docker run --privileged=true --name elasticsearch \
-p 9200:9200  -p 9300:9300  \
-e "discovery.type=single-node"  \
-e ES_JAVA_OPTS="-Xms64m -Xmx128m" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/config/analysis-ik:/usr/share/elasticsearch/config/analysis-ik \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data  \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d docker.elastic.co/elasticsearch/elasticsearch:8.12.2

-e ES_JAVA_OPTS="-Xms 64 m -Xmx 128 m" 是指定 jvm 大小,參見 Manually set the heap size

安裝 ik 分詞器

# 進入docker容器
docker exec -it elasticsearch /bin/bash
# 安裝ik分詞器(此命令要在容器內執行)
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v8.12.2/elasticsearch-analysis-ik-8.12.2.zip

如果安裝 ik 分詞器時報錯並且出現 Permission denied 字樣,那就是 analysis-ik 資料夾的許可權沒有配置正確。

安裝完成之後別急著退出容器,往下看

初始化密碼

# 此命令要在容器內執行
./bin/elasticsearch-setup-passwords interactive

設定 ik 分詞器自定義使用者詞典

修改 /home/elasticsearch/config/analysis-ik/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>

例如 custom/mydict.dic,那麼檔案就存放在 /home/elasticsearch/config/analysis-ik/custom/mydict. dic

記得分配讀寫許可權,不然容器沒法去讀取

總結

本文介紹了 elasticsearch 8.12.2 的安裝和 ik 分詞器的安裝。最後推薦一個連線 ES 的工具 es-client

es-head 已經停止更新了,有坑,快跑。

最後再 bb 一句,es-client 也有坑,查詢請用 POST,因為 GET 方式沒法攜帶請求 body

參考資料

史上最詳細Docker安裝Elasticsearch、ik分詞器、視覺化工具,每一步都帶有步驟圖!!!

神坑:ElasticSearch8叢集啟動報錯“Device or resource busy”(Docker方式)_/usr/share/elasticsearch/config/elasticsearch.yml

相關文章