前言
最近在學習 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