讓學習成為一種習慣!--------magic_guo
最近在學習為服務專案,免不了要接觸一些第三方組件,如:es、rabbitMq、fastDFS等,如果在服務器中安裝這些單一組件或者將這些組件搭建成集群的話,我認為使用docker服務會方便管理;另外docker中的docker-compose也可以很方便的管理這些專案;
今天記錄一下搜索引擎elasticsearch和kibana:
elasticsearch簡寫es,es是一個高擴展、開源的全文檢索和分析引擎,它可以準實時地快速存盤、搜索、分析海量的資料,
全文檢索是指計算機索引程式通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現的次數和位置,當用戶查詢時,檢索程式就根據事先建立的索引進行查找,并將查找的結果反饋給用戶的檢索方式,這個程序類似于通過字典中的檢索字表查字的程序,全文搜索搜索引擎資料庫中的資料
kibana是es的管理界面,就好像rabbitMq的management一樣,將es可視化;
安裝要點:
我這里安裝的是7.2.0版本的,一定要牢記es和kibana的版本要一直才能連接上;另外順便提一下,在java代碼中選擇依賴,也要選擇相同的版本;以為不同的版本可能對應的API介面會有所改變,例如在es在7.x以上版本不用再設定type doc這個屬性;
下載鏡像:
docker pull elasticsearch:7.2.0
docker pull kibana:7.2.0
es容器啟動命令:
docker run --name elasticsearch --restart always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms200M -Xmx200M" -d elasticsearch:7.2.0
需要注意的是:
1、–restart always 引數:服務器中docker啟動時此容器也隨著啟動;
2、-e ES_JAVA_OPTS="-Xms200M -Xmx200M" :設定es容器啟動的容量大小,由于我是用的是虛擬機,分配記憶體比較小,分配給es容器的大小是200M;建議此容器的大小設定不要超過虛擬機容器的一半:

啟動之后,進到容器內部,解決es訪問跨域問題:
在config/elasticsearch.yml中添加:
http.cors.enabled: true
http.cors.allow-origin: "*"
命令:
docker exec -it elasticsearch /bin/bash
vi config/elasticsearch.yml

效果:

安裝ik分詞器:
直接在線下載,下載完成之后,輸入y確認安裝即可
需要注意的是ik分詞器和es的版本也最好相同;
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
安裝完ik分詞后,直接Ctrl+p+q退出而不關閉容器,然后重啟次容器:
docker restart elasticsearch
啟動完之后在瀏覽器中訪問http://yourIp:9200,看到如下內容代表es安裝成功,

postman測驗ik分詞器:
訪問http://yourIp:9200/_analyze
攜帶Json引數:
{
"analyzer": "ik_smart",
"text": "我是中國人"
}
看到如下界面,說明ik諷刺器安裝成功:

啟動kibana:
docker run --name kibana -e ELASTICSEARCH_URL=http://172.17.0.3:9200 -p 5601:5601 -d kibana:7.2.0
說明:
-e ELASTICSEARCH_URL=http://172.17.0.3:9200 是對于es的關聯,也是es對外暴露的ip;
可以使用 docker inspect 容器名字/id 產看容器的資訊:
docker inspect 容器名字/id

啟動成功之后,需要進入/usr/share/kibana/config/kibana.yml修改一下對于es關聯的ip,因為初始化的ip地址是http://elasticsearch:9200 需要修改成es對外暴露的ip:http://172.17.0.3:9200

然后同樣退出容器重啟容器,訪問http://yourIpo:5601
就可以看到kibana的界面:

如果連接不上可以使用docker logs kibana 來查看kibana容器的連接狀態資訊;
另外我認為kibana容器應晚于es容器的啟動,這樣不會導致kibana找不到es的連接;可以使用docker-compose的定義管理這些容器的啟動順序;
完結!
靜下心,慢慢來,會很快!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292662.html
標籤:其他
上一篇:Hadoop學習筆記一
下一篇:大資料面試(一):Hive面試題
