您好,登錄后才能下訂單哦!
本篇內容介紹了“Docker安裝ElasticSearch的過程”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
前言
一、安裝Docker
二、安裝ElasticSearch
三、安裝ElasticSearch-Head
四、安裝IK分詞器
項目準備上ElasticSearch,為了后期開發不卡殼只能笨鳥先飛,在整個安裝過程中遇到以下三個問題。
Docker安裝非常慢
ElasticSearch-Head連接出現跨域
ElasticSearch-Head操作報出406錯誤碼
目前咔咔對Docker的理解還只是個皮毛,對于不了解的東西就要多多使用,使用的多了自然而然也就會了。
安裝依賴包,執行命令yum install -y yum-utils device-mapper-persistent-data lvm2
此時若直接執行安裝docker命令就會發現是十分慢的,這個等待過程是漫長的。
配置國內的源就可以解決問題yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
這里使用的是阿里云的源。
接著再執行命令yum install docker-ce docker-ce-cli containerd.io
安裝docker即可。
配置docker開機自啟systemctl enable docker
執行systemctl start docker
命令啟動docke
查看docker版本看是否安裝成功
docker版本
如若之前安裝docker有問題,那么執行yum remove docker-ce
來刪除并且將/var/lib/docker
下的所有東西全部刪除干凈。
docker安裝完成后咔咔就進行了創建容器,但遇到了一個問題WARNING: IPv4 forwarding is disabled. Networking will not work.
拿著這個錯誤直接找度娘才知道,沒有開啟轉發,網絡橋接配置后,是需要開啟轉發的。
若不開啟轉發就會出現上邊的錯誤,顯示沒有網絡。
解決方案
修改配置文件/etc/sysctl.conf
,在里邊加上net.ipv4.ip_forward=1
,然后重啟服務systemctl restart network
,讓配置生效。
使用docker直接獲取es鏡像,執行命令docker pull elasticsearch:7.7.0
執行完成后,執行docker images即可看到上一步拉取的鏡像。
es鏡像文章
有了鏡像,就可以開始創建容器了,接下來創建一個es的容器。
執行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: 后臺運行容器,并返回容器ID;
-e: 指定容器內的環境變量
-p: 指定端口映射,格式為:主機(宿主)端口:容器端口
命令執行完成會返回容器id,此時再執行docker ps -a列出所有的容器。
es容器
es默認端口為9200,只用ip地址+端口號直接訪問,就會返回如下圖。出現這個界面就表示你安裝成功了。
返回結果
到這里我們就非常快速的使用Docker安裝完成了ElasticSearch,接下來再一起安裝針對于ElasticSearch的客戶端工具。
同樣也采用Docker進行快速安裝,跟上邊一樣同樣先拉取鏡像,執行命令docker pull mobz/elasticsearch-head:5
接著創建容器,執行docker create --name elasticsearch-head -p 9100:9100 mobz/elasticsearch-head:5
安裝ElasticSearch-Head插件
為了保證圖片的清晰度,圖片就沒有截取完全,同時也是咔咔接下來將要跟你講的,注意倆次創建容器時的不同。
安裝ElasticSearch時是容器創建成功后直接在后臺就運行了,但在安裝ElasticSearch-Head時并沒有保持一致。
而是指定容器名,端口號就直接執行了,這樣執行完成后是創建了一個容器,并沒有運行。
也就是咔咔在上圖右下角的地方有一個框,這里就可以看到狀態,會發現是create。
所以還需要一個操作,那就是啟動容器docker start 容器id
。
安裝完成直接使用域名
加端口9100
即可訪問。
跨域問題
處理跨域
在連接ElasticSearch會發現無法連接,由于時前后端分離開發,所以會存在跨域問題,需要在服務端做跨域處理。
執行命令docker exec -it elasticsearch /bin/bash
進入到第一步創建的ElasticSearch容器中,修改配置文件vi config/elasticsearch.yml
即可。
http.cors.enabled: true
http.cors.allow-origin: "*"
將上邊倆行寫進配置文件中,注意這里是用yml的配置文件,簡單普及一下此類配置文件的幾點語法。
冒號后邊必須有一個空格
使用空格的縮進標識層級關系,空格數據不重要,只要是左邊對其的一列鍵即可。
對大小寫十分敏感
縮進時不允許使用tab,只允許使用空格。
配置修改完后需執行命令exit
退出容器,接著執行docker restart 容器ID
重啟容器即可。
處理報406錯誤
此時通過ElasticSearch-Head
可以成功連接ElasticSearch
了,但進行數據操作時會報406錯誤。
只需要修改ElasticSearch-Head容器中的配置即可,將配置文件復制到宿主機進行修改。
執行docker cp 容器ID:/usr/src/app/_site/vendor.js /usr/local/
,此命令會把docker容器中的文件復制到你的宿主機目錄。
進入到/usr/local即可看到從容器中復制出來的文件vendor.js。
修改文件第6886、7574行,將"application/x-www-from-urlencodes"修改為"application/json;charset=UTF-8"即可
修改后再將文件復制到容器中,從容器復制文件到宿主機命令已經使用過了,那么現在只不過是把倆個目錄反過來即可執行docker cp /usr/local/vendor.js 容器ID:/usr/src/app/_site
最后一步重啟
ElasticSearch-Head容器就結束了。
首先問一個問題,ElasticSearch中自帶的有分詞器為什么還要使用IK分詞器?
在ElasticSearch中的分詞器會把中文分為一個一個的字,例如"今天是周五",會被分成“今”、“天”、“是”,“周”、“五”,這里很明顯是不合適的,在大多數場景下需要的是詞而不是字。
所以就需要安裝中文分詞器IK來解決這個問題。
IK提供了兩個分詞算法:ik_smart和ik_max_word,其中ik_smart為最少切分,ik_max_word為最細力度。分別都有什么區別會在下期文章中給大家提出來。
這里需要注意安裝的版本需要跟ElasticSearch版本一致。
進入到ElasticSearch容器中docker exec -it 容器ID /bin/bash
使用wget來進行安裝,執行wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.7.0/elasticsearch-analysis-ik-7.7.0.zip
即可。
當你使用wget安裝出現Unable to establish SSL connection
時執行以下倆個命令即可。
yum install opensslls
yum install openssl-devel
執行cd /usr/share/elasticsearch/plugins
來到插件目錄創建一個IK
目錄。
將壓縮包移動到IK
目錄中,執行解壓指令elasticsearch-analysis-ik-7.7.0.zip
接著刪除壓縮包即可,此時你可以看到一個config包和幾個jar包
解壓后的包
最后退出容器,重啟重啟容器即可。
“Docker安裝ElasticSearch的過程”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。