目錄
- 前言
- 一、安裝Docker
- 二、安裝ElasticSearch
- 三、安裝ElasticSearch-Head
- 四、安裝IK分詞器
- 五、總結(jié)
前言
項(xiàng)目準(zhǔn)備上ElasticSearch,為了后期開(kāi)發(fā)不卡殼只能笨鳥(niǎo)先飛,在整個(gè)安裝過(guò)程中遇到以下三個(gè)問(wèn)題。
- Docker安裝非常慢
- ElasticSearch-Head連接出現(xiàn)跨域
- ElasticSearch-Head操作報(bào)出406錯(cuò)誤碼
一、安裝Docker
目前咔咔對(duì)Docker的理解還只是個(gè)皮毛,對(duì)于不了解的東西就要多多使用,使用的多了自然而然也就會(huì)了。
安裝依賴包,執(zhí)行命令yum install -y yum-utils device-mapper-persistent-data lvm2
此時(shí)若直接執(zhí)行安裝docker命令就會(huì)發(fā)現(xiàn)是十分慢的,這個(gè)等待過(guò)程是漫長(zhǎng)的。
配置國(guó)內(nèi)的源就可以解決問(wèn)題yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
這里使用的是阿里云的源。
接著再執(zhí)行命令yum install docker-ce docker-ce-cli containerd.io
安裝docker即可。
配置docker開(kāi)機(jī)自啟systemctl enable docker
執(zhí)行systemctl start docker
命令啟動(dòng)docke
查看docker版本看是否安裝成功
docker版本
如若之前安裝docker有問(wèn)題,那么執(zhí)行yum remove docker-ce
來(lái)刪除并且將/var/lib/docker
下的所有東西全部刪除干凈。
docker安裝完成后咔咔就進(jìn)行了創(chuàng)建容器,但遇到了一個(gè)問(wèn)題WARNING: IPv4 forwarding is disabled. Networking will not work.
拿著這個(gè)錯(cuò)誤直接找度娘才知道,沒(méi)有開(kāi)啟轉(zhuǎn)發(fā),網(wǎng)絡(luò)橋接配置后,是需要開(kāi)啟轉(zhuǎn)發(fā)的。
若不開(kāi)啟轉(zhuǎn)發(fā)就會(huì)出現(xiàn)上邊的錯(cuò)誤,顯示沒(méi)有網(wǎng)絡(luò)。
解決方案
修改配置文件/etc/sysctl.conf
,在里邊加上net.ipv4.ip_forward=1
,然后重啟服務(wù)systemctl restart network
,讓配置生效。
二、安裝ElasticSearch
使用docker直接獲取es鏡像,執(zhí)行命令docker pull elasticsearch:7.7.0
執(zhí)行完成后,執(zhí)行docker images即可看到上一步拉取的鏡像。
es鏡像文章
有了鏡像,就可以開(kāi)始創(chuàng)建容器了,接下來(lái)創(chuàng)建一個(gè)es的容器。
執(zhí)行docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0
--name 表示容器名稱
-d: 后臺(tái)運(yùn)行容器,并返回容器ID;
-e: 指定容器內(nèi)的環(huán)境變量
-p: 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口
命令執(zhí)行完成會(huì)返回容器id,此時(shí)再執(zhí)行docker ps -a列出所有的容器。
es容器
es默認(rèn)端口為9200,只用ip地址+端口號(hào)直接訪問(wèn),就會(huì)返回如下圖。出現(xiàn)這個(gè)界面就表示你安裝成功了。
返回結(jié)果
到這里我們就非??焖俚氖褂肈ocker安裝完成了ElasticSearch,接下來(lái)再一起安裝針對(duì)于ElasticSearch的客戶端工具。
三、安裝ElasticSearch-Head
同樣也采用Docker進(jìn)行快速安裝,跟上邊一樣同樣先拉取鏡像,執(zhí)行命令docker pull mobz/elasticsearch-head:5
接著創(chuàng)建容器,執(zhí)行docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
安裝ElasticSearch-Head插件
為了保證圖片的清晰度,圖片就沒(méi)有截取完全,同時(shí)也是咔咔接下來(lái)將要跟你講的,注意倆次創(chuàng)建容器時(shí)的不同。
安裝ElasticSearch時(shí)是容器創(chuàng)建成功后直接在后臺(tái)就運(yùn)行了,但在安裝ElasticSearch-Head時(shí)并沒(méi)有保持一致。
而是指定容器名,端口號(hào)就直接執(zhí)行了,這樣執(zhí)行完成后是創(chuàng)建了一個(gè)容器,并沒(méi)有運(yùn)行。
也就是咔咔在上圖右下角的地方有一個(gè)框,這里就可以看到狀態(tài),會(huì)發(fā)現(xiàn)是create。
所以還需要一個(gè)操作,那就是啟動(dòng)容器docker start 容器id
。
安裝完成直接使用域名
加端口9100
即可訪問(wèn)。
跨域問(wèn)題
處理跨域
在連接ElasticSearch會(huì)發(fā)現(xiàn)無(wú)法連接,由于時(shí)前后端分離開(kāi)發(fā),所以會(huì)存在跨域問(wèn)題,需要在服務(wù)端做跨域處理。
執(zhí)行命令docker exec -it elasticsearch /bin/bash
進(jìn)入到第一步創(chuàng)建的ElasticSearch容器中,修改配置文件vi config/elasticsearch.yml
即可。
http.cors.enabled: true
http.cors.allow-origin: "*"
將上邊倆行寫進(jìn)配置文件中,注意這里是用yml的配置文件,簡(jiǎn)單普及一下此類配置文件的幾點(diǎn)語(yǔ)法。
- 冒號(hào)后邊必須有一個(gè)空格
- 使用空格的縮進(jìn)標(biāo)識(shí)層級(jí)關(guān)系,空格數(shù)據(jù)不重要,只要是左邊對(duì)其的一列鍵即可。
- 對(duì)大小寫十分敏感
- 縮進(jìn)時(shí)不允許使用tab,只允許使用空格。
配置修改完后需執(zhí)行命令exit
退出容器,接著執(zhí)行docker restart 容器ID
重啟容器即可。
處理報(bào)406錯(cuò)誤
此時(shí)通過(guò)ElasticSearch-Head
可以成功連接ElasticSearch
了,但進(jìn)行數(shù)據(jù)操作時(shí)會(huì)報(bào)406錯(cuò)誤。
只需要修改ElasticSearch-Head容器中的配置即可,將配置文件復(fù)制到宿主機(jī)進(jìn)行修改。
執(zhí)行docker cp 容器ID:/usr/src/app/_site/vendor.js /usr/local/
,此命令會(huì)把docker容器中的文件復(fù)制到你的宿主機(jī)目錄。
進(jìn)入到/usr/local即可看到從容器中復(fù)制出來(lái)的文件vendor.js。
修改文件第6886、7574行,將"application/x-www-from-urlencodes"修改為"application/json;charset=UTF-8"即可
修改后再將文件復(fù)制到容器中,從容器復(fù)制文件到宿主機(jī)命令已經(jīng)使用過(guò)了,那么現(xiàn)在只不過(guò)是把倆個(gè)目錄反過(guò)來(lái)即可執(zhí)行docker cp /usr/local/vendor.js 容器ID:/usr/src/app/_site
最后一步重啟
ElasticSearch-Head容器就結(jié)束了。
四、安裝IK分詞器
首先問(wèn)一個(gè)問(wèn)題,ElasticSearch中自帶的有分詞器為什么還要使用IK分詞器?
在ElasticSearch中的分詞器會(huì)把中文分為一個(gè)一個(gè)的字,例如"今天是周五",會(huì)被分成“今”、“天”、“是”,“周”、“五”,這里很明顯是不合適的,在大多數(shù)場(chǎng)景下需要的是詞而不是字。
所以就需要安裝中文分詞器IK來(lái)解決這個(gè)問(wèn)題。
IK提供了兩個(gè)分詞算法:ik_smart和ik_max_word,其中ik_smart為最少切分,ik_max_word為最細(xì)力度。分別都有什么區(qū)別會(huì)在下期文章中給大家提出來(lái)。
這里需要注意安裝的版本需要跟ElasticSearch版本一致。
進(jìn)入到ElasticSearch容器中docker exec -it 容器ID /bin/bash
使用wget來(lái)進(jìn)行安裝,執(zhí)行wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip
即可。
當(dāng)你使用wget安裝出現(xiàn)Unable to establish SSL connection
時(shí)執(zhí)行以下倆個(gè)命令即可。
yum install opensslls
yum install openssl-devel
執(zhí)行cd /usr/share/elasticsearch/plugins
來(lái)到插件目錄創(chuàng)建一個(gè)IK
目錄。
將壓縮包移動(dòng)到IK
目錄中,執(zhí)行解壓指令elasticsearch-analysis-ik-7.7.0.zip
接著刪除壓縮包即可,此時(shí)你可以看到一個(gè)config包和幾個(gè)jar包
解壓后的包
最后退出容器,重啟重啟容器即可。
五、總結(jié)
本期文章將需要使用ElasticSearch所有的東西都已經(jīng)準(zhǔn)備齊全了,接下來(lái)的文章會(huì)帶著你使用PHP的Laravel開(kāi)始封裝ElasticSearch的所有查詢方法。
后期也會(huì)在Go中封裝一份,給自己的工具類添加一點(diǎn)內(nèi)容。
到此這篇關(guān)于一文搞定Docker安裝ElasticSearch的過(guò)程的文章就介紹到這了,更多相關(guān)Docker安裝ElasticSearch內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!