網(wǎng)站建設(shè)租房網(wǎng)模塊專業(yè)網(wǎng)絡(luò)推廣機(jī)構(gòu)
默認(rèn)已經(jīng)有docker環(huán)境
下載與安裝 elasticsearch ,從hub.docker里面可以看到最新版本的鏡像,選擇你想要的版本
本教程是以 7.17.7 為案例,為啥不適用最新的,首先個人一般需用最新的版本,如果有亢很難填,其次我自己的服務(wù)器下載的太慢(還是配置了docker加速地址的)拉取幾個小時都下載不下來7.17.9版也一樣,直接放棄~ 最終挑到了7.17.7
【官方傳遞】https://hub.docker.com/_/elasticsearch
一、安裝、運行 elasticsearch
拉取鏡像
docker pull elasticsearch:7.17.7
運行實例
docker run -d --name elasticsearch -p 9200:9200 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.17.7
訪問 ip+9200 出現(xiàn)該界面表示已經(jīng)安裝、運行成功!
如果沒有成功,請看一下docker 運行的日志
docker logs [OPTIONS] CONTAINER OPTIONS說明:
-f : 跟蹤日志輸出
–since :顯示某個開始時間的所有日志
-t : 顯示時間戳
–tail : 僅列出最新N條容器日志
為防止重要的數(shù)據(jù)掉失,我們需要將es重要文件掛載到外部
1.找個存儲文件的目錄,我這里放置在/usr/docker
- 執(zhí)行復(fù)制容器文件命令
首先得知道運行的容器信息,執(zhí)行 docker ps 查看正在運行的實例
可通過 docker exec -it 容器id /bin/bash 進(jìn)入容器內(nèi)容查看,通過 exit 退出容器內(nèi)部
復(fù)制容器內(nèi)容到 /usr/docker 目錄
docker cp e3b71d0d624b:/usr/share/elasticsearch /usr/docker
復(fù)制完成就可以看到 es的一大推文件
- 刪除之前運行的實例,先停止再刪除
docker stop xx
docker rm xxx
- 重新運行實例,命令如下
docker run -d --name es -p 9200:9200 -p 9300:9300 -v /usr/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /usr/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /usr/docker/elasticsearch/logs:/user/share/elasticsearch/logs -v /usr/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -v /usr/docker/elasticsearch/backup:/usr/share/elasticsearch/backup -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" --restart=always elasticsearch:7.17.7
參數(shù)部分解釋,elasticsearch更多docker相關(guān)參數(shù)可在hub.docker里面找到
-v xxx:/xx 表示要掛載的目錄或文件
-e ES_JAVA_OPTS=“-Xms64m -Xmx512m” 表示最大內(nèi)存512M,最小內(nèi)存64M
–restart=always 隨docker自動重啟 注:這里限制內(nèi)存 不然小服務(wù)器頂不住。
運行成功,可以看到cpu,內(nèi)存差點爆表,不過不用擔(dān)心稍會就會降下去。至于為啥會這樣目前不太清楚,有大神可以留言,請教一下!感謝好心人!
二、安裝elasticsearch可視化工具
這里選擇了 elasticsearch head
#拉取鏡像
docker pull mobz/elasticsearch-head:5
#運行實例
docker run -p 9100:9100 --name elasticsearch-head -d mobz/elasticsearch-head:5
運行成功如下
雖然運行成功了但可以看到是未連接的狀態(tài),就算輸入了正確的ip地址還是不能連接,打開F12可以看到是跨域的問題
解決辦法
修改docker中elasticsearch的elasticsearch.yml文件,在最后面加上
http.cors.enabled: true
http.cors.allow-origin: "*"
可像我這樣找到已經(jīng)掛載在外部的配置文件,打開修改也可以使用命令隨你喜歡~(記得重啟服務(wù))
如果沒有掛載在外部的可進(jìn)行容器里面修改(強烈推薦掛載)
docker exec -it 容器id /bin/bash
vi config/elasticsearch.yml
xxxx
#退出并重啟服務(wù)
exit
docker restart 容器id
重啟服務(wù)后輸入正確的ip,可以看到這個界面表明可以了
最后需要解決elasticsearch-head 面板操作數(shù)據(jù)時不顯示報406的問題,如圖打開這些界面發(fā)現(xiàn)是空白的而且報錯。
解決版本 修改_site/vendor.js 文件
6886行 contentType: “application/x-www-form-urlencoded”, 改成
contentType: “application/json;charset=UTF-8”, 7573行 var inspectData =
s.contentType === “application/x-www-form-urlencoded” && 改成 var
inspectData = s.contentType === “application/json;charset=UTF-8” &&
你可以選擇將文件掛載到外部去,也可以進(jìn)行容器里面直接修改。
●先把elasticsearch-head的文件掛載到外部去,這里就不詳細(xì)的貼出來了。
docker cp 0b5e6db9316a:/usr/src/app /usr/docker/eshead
我這里遇到一個小問題,在查看掛載信息發(fā)現(xiàn)文件確實時掛載成功了,但是打開vendor.js發(fā)現(xiàn)還是原來的內(nèi)容這讓我很困惑不知道是不是緩存的原因。隨后我在url后面加上了版本號發(fā)現(xiàn)還是原來的內(nèi)容 ~~
只能暴力解決了,后面在找個時間看看是什么回事 ~~
從外部復(fù)制文件到容器里面
docker cp /usr/docker/eshead/app/_site/vendor.js 容器id:/usr/src/app/_site
重啟服務(wù),好了,刷新界面看到這個界面就 ok
查看掛載信息
docker inspect 容器id
到此我們安裝教程已經(jīng)結(jié)束了,下篇將與wep api 對接完成我們的全站搜索功能
附源加速