ElasticSearch&kibana安裝

  • 2021 年 9 月 30 日
  • 筆記

ElasticSearch

ElasticSearch 簡介

Elasticsearch是一個分散式、可擴展、實時的搜索與數據分析引擎。它可以讓您快速且近實時地存儲,檢索以及分析海量數據。它通常用作那些具有複雜搜索功能和需求的應用的底層引擎或者技術。

全文搜索屬於最常見的需求,開源的 Elasticsearch 是目前全文搜索引擎的首選。

Elasticsearch的底層是開源庫吧Lucene。但是,你沒法直接用,必須自己寫程式碼調用它的介面,Elastic 是 Lunce 的封裝,提供了 REST API 的操作介面,開箱即用。

官方文檔:點我傳送

官方中文文檔:點我傳送

社區文檔:點我傳送點我傳送

ElasticSearch 概念

  • 索引
  • 類型
  • 文檔
  • 屬性
  • 倒排索引表

ElasticSearch quick start

docker安裝ElasticSearch Kibana

# 存儲和檢索數據
docker pull elasticsearch:7.4.2 

# 可視化檢索數據
docker pull kibana:7.4.2 

至少保證記憶體可用量為300+,越多越好

# 查看可用記憶體大小
free -m

創建實例

ElasticSearch

# 創建elasticsarch的config
mkdir -p /mydata/elasticsearch/config 

# 創建elasticsarch的data
mkdir -p /mydata/elasticsearch/data

# 配置elasticsearch.yml 
# 注: 'host:'中 ':'後跟著空格
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml

# 設置elasticsearch目錄許可權
chmod -R 777 /mydata/elasticsearch/

# 啟動elasticsearch
# 特別注意:-e ES_JAVA_OPTS="-Xms64m -Xmx256m"  測試環境下,設置ES的初始記憶體和最大記憶體,否則導致過大啟動不了 ES
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.4.2

# 當 Docker 重啟時,容器能自動啟動
docker update elasticsearch --restart=always
docker restart elasticsearch

訪問 ip:9200

# 查看虛擬機ip
ip addr

# 訪問 ip:9200
192.168.188.128:9200

Kibana

啟動kibana時有兩種方式,任選其一。如果是通過docker使用kibana,則直接執行方式二。

方式一:
# 啟動kibana
# ELASTICSEARCH_HOSTS 一定改為自己虛擬機的地址
docker run --name kibana -e ELASTICSEARCH_HOSTS=//192.168.188.128:9200 -p 5601:5601 \
-d kibana:7.4.2

# 當 Docker 重啟時,容器能自動啟動
docker update kibana --restart=always
docker restart kibana

訪問 ip:5601

# 查看虛擬機ip
ip addr

# 訪問 ip:5601
192.168.188.128:5601
方式二:
# 查看docker中elasticSearch的ip
# 查看 es 實例暴露的IP
docker inspect elasticsearch
# 重新創建實例
docker run --name kibana -e ELASTICSEARCH_HOSTS=//172.17.0.3:9200 \
-p 5601:5601 -d kibana:7.4.2 
# 當 Docker 重啟時,容器能自動啟動
docker update kibana --restart=always
docker restart kibana

ElasticSearch 使用

_cat

# 查看所有節點
//192.168.188.128:9200/_cat/nodes

# 查看 es 健康狀況
//192.168.188.128:9200/_cat/health

# 查看主節點
//192.168.188.128:9200/_cat/master

# 查看所有索引
//192.168.188.128:9200/_cat/indices

新增數據

elasticsearch通過接收PUT和POST請求來新增數據,然而在新增數據之前,我們需要來了解elasticsearch中的幾個概念:

  • 索引
  • 類型
  • 文檔
  • 屬性
    在elasticsearch中新增數據稱其為 索引一個文檔

問題匯總

問題一:

通過docker logs [容器id]查看日誌,如果出現以下錯誤:

{.. "message" : "Unable to revive connection: //ip:9200/"}

87130361-7543-4c8d-B583-97E0CB168321.png
錯誤原因:
Docker容器中啟動服務和直接在Linux環境下安裝服務,會有ip上的區別,不在是伺服器的物理ip,而是容器對外暴露對的ip。簡單來說,需要設置kibana的ElasticSearch Ip為docker容器的ip,而不是物理機的Ip。

解決方法:查看啟動kibana方式二

通過docker inspect elasticsearch查看ES實例暴露出來的ip 。停止並刪除現有的Kibana容器,然後重新啟動kibana並添加環境變數參數:-e ELASTICSEARCH_HOSTS=”//es暴露的IP:9200

# 停止實例
docker stop kibana
# 刪除實例
docker rm kibana
# 查看 es 實例暴露的IP
docker inspect elasticsearch
# 重新創建實例
docker run --name kibana -e ELASTICSEARCH_HOSTS=//172.17.0.3:9200 \
-p 5601:5601 -d kibana:7.4.2 

99C0D170-8F21-4557-8230-2346BA25E6F8.png

問題二:

打開網址一直顯示以下頁面 :

Kibana server is not ready yet

錯誤原因:
Docker容器中啟動服務和直接在Linux環境下安裝服務,會有ip上的區別,不在是伺服器的物理ip,而是容器對外暴露對的ip。簡單來說,需要設置kibana的ElasticSearch Ip為docker容器的ip,而不是物理機的Ip。

解決方法:查看啟動kibana方式二

通過docker inspect elasticsearch查看ES實例暴露出來的ip 。停止並刪除現有的Kibana容器,然後重新啟動kibana並添加環境變數參數:-e ELASTICSEARCH_HOSTS=”//es暴露的IP:9200

# 停止實例
docker stop kibana
# 刪除實例
docker rm kibana
# 查看 es 實例暴露的IP
docker inspect elasticsearch
# 重新創建實例
docker run --name kibana -e ELASTICSEARCH_HOSTS=//172.17.0.3:9200 \
-p 5601:5601 -d kibana:7.4.2 

99C0D170-8F21-4557-8230-2346BA25E6F8.png