ElasticSearch、Kibana 介紹&安裝



ElasticSearch 介紹

基於數據庫查詢的問題

image

倒排(反向)索引

倒排索引:將一段文本按照一定的規則,拆分為不同的詞條(term),形成詞條和 id 的對應關系

以唐詩為例,所處包含“前”的詩句:

  • 正向索引:《靜夜思》--> 窗前明月光 ---> “前”字
  • 反向索引:“前”字 --> 窗前明月光 --> 《靜夜思》

image

ES 存儲和查詢的原理

  • index(索引):相當於 mysql 的庫

  • mapping(映射):相當於 mysql 的表結構

  • document(文檔):相當於 mysql 表中的數據

以下圖為例:ES 使用倒排索引,對 title 進行分詞

image

  1. 使用“手機”作為關鍵字查詢:

    • 生成的倒排索引中,詞條會排序,形成一棵樹形結構,以提升詞條的查詢速度
  2. 使用“華為手機”作為關鍵字查詢:

    • 華為:1, 3
    • 手機:1, 2, 3

ES 核心概念

什么是 ES ?

  • ElasticSearch 是一個基於 Lucene 的搜索服務器。
    image

  • 是一個分布式、高擴展、高實時的搜索與數據分析引擎。

  • 基於 RESTful Web 接口。

  • ElasticSearch 由 Java 語言開發,並作為 Apache 許可條款下的開放源碼發布,是一種流行的企業級搜索引擎。

  • 官網:https://www.elastic.co/

ES 應用場景

  • 搜索:海量數據的查詢

  • 日志數據分析

  • 實時數據分析

核心概念

  • **索引(index)**:ElasticSearch 存儲數據的地方,可以理解成關系型數據庫中的數據庫概念。

  • **映射(mapping)**:Mapping 定義了每個字段的類型、字段所使用的分詞器等。相當於關系型數據庫中的表結構。

  • **文檔(document)**:ElasticSearch 中的最小數據單元,常以 json 格式顯示。一個 document 相當於關系型數據庫中的一行數據。

  • 倒排索引:一個倒排索引由文檔中所有不重復詞的列表構成。對於其中每個詞,對應一個包含它的文檔 id 的列表。

  • 類型(type):一種 type 就像一類表。如用戶表、角色表等。

    • ES 5.x 中一個 index 可以有多種 type。
    • ES 6.x 中一個 index 只能有一種 type。
    • ES 7.x 以后,將逐步移除 type 這個概念,現在的操作已經不再使用,默認 type 為 _doc 。

ES 安裝

1)官網下載地址https://www.elastic.co/cn/downloads/

2)解壓

# 將 elasticsearch-7.4.0-linux-x86_64.tar.gz 解壓到如 /opt 目錄下
tar -zxvf elasticsearch-7.4.0-linux-x86_64.tar.gz -C /opt

3)創建普通用戶

  • 因為安全問題,Elasticsearch 不允許 root 用戶直接運行,所以要創建新用戶,在 root 用戶中創建新用戶:
useradd es  # 新增 es 普通用戶
passwd es  # 為 es 用戶設置密碼

# 為新用戶授權
chown -R es:es /opt/elasticsearch-7.4.0
chmod 777 -R /opt/elasticsearch-7.4.0

4)修改 elasticsearch.yml 啟動配置

# vi /opt/elasticsearch-7.4.0/config/elasticsearch.yml
# 配置 ES 的集群名稱,默認是 elasticsearch
cluster.name: my-application
# 配置節點名稱(elasticsearch 會默認隨機指定一個名字)
node.name: node-1
# 配置為 0.0.0.0 表示允許外網訪問
network.host: 0.0.0.0
# 配置 ES 的訪問端口
http.port: 9200
# 初始化新的集群時,需要此配置來選舉 master
cluster.initial_master_nodes: ["node-1"]

5)修改參數配置

  • 新創建用戶(ES)的默認最大可創建文件數和最大虛擬內存均太小,因此可以進行如下配置:
# ===最大可創建文件數=======
# vi /etc/security/limits.conf
# 在文件末尾中增加下面內容
es soft nproc 5000
es hard nproc 5000
# 重啟服務器后生效

# ===最大虛擬內存=======
# vi /etc/sysctl.conf
# 在文件中增加下面內容
vm.max_map_count=655360
# 重新加載虛擬內存
# sysctl -p

6)啟動 elasticsearch

  • 注意:啟動時確認 jdk 使用的是 ES 安裝目錄中自帶的,否則容易報 jdk 不兼容的問題。
    image
su es
cd /opt/elasticsearch-7.4.0/bin
./elasticsearch
  • 如下圖可以看到 ES 啟動成功:
    image

7)訪問 ES

  • 在訪問 ES 前,請確保防火牆是關閉的:
# 暫時關閉防火牆
systemctl stop firewalld

# 永久設置防火牆狀態
systemctl enable firewalld.service  # 打開
systemctl disable firewalld.service  # 關閉

Kibana 介紹&安裝

1)什么是 Kibana ?

  • Kibana 是一個針對 ElasticSearch 的開源分析及可視化平台,用來搜索、查看交互存儲在 ElasticSearch 索引中的數據。使用 Kibana,可以通過各種圖表進行高級數據分析及展示。

  • Kibana 讓海量數據更容易理解。它操作簡單,基於瀏覽器的用戶界面可以快速創建儀表板(DashBoard)實時顯示 ElasticSearch 查詢動態。

2)解壓 Kibana

tar -xzf kibana-7.4.0-linux-x86_64.tar.gz -C /opt

3)修改 Kibana 配置

# vi /opt/kibana-7.4.0-linux-x86_64/config/kibana.yml
# 訪問端口
server.port: 5601
# 表示可通過外網訪問
server.host: "0.0.0.0"
# kibana服務名
server.name: "kibana-itcast"
# ES 地址
elasticsearch.hosts: ["http://127.0.0.1:9200"]
# ES 請求超時時間(默認30000ms)
elasticsearch.requestTimeout: 99999

4)啟動 Kibana

  • Kibana 不建議使用 root 用戶啟動,若要用 root 啟動,需要加 --allow-root 參數
# 切換到kibana的bin目錄
cd /opt/kibana-7.4.0-linux-x86_64/bin
# 啟動
./kibana --allow-root
# 后台啟動
nohup ./kibana &
  • 如下表示啟動成功:
    image

5)訪問 kibana

  • 瀏覽器訪問 http://虛擬機IP:5601/
    image

  • 左側菜單欄說明:

    • Discover:可視化查詢分析器
    • Visualize:統計分析圖表
    • Dashboard:自定義主面板(添加圖表)
    • Timelion:Timelion 是一個 kibana 時間序列展示組件(暫時不用)
    • Dev Tools:Console 控制台(同 CURL/POSTER,操作 ES 代碼工具。有代碼提示,因此很方便)
    • Management:管理索引庫(index)、已保存的搜索和可視化結果(save objects)、設置 kibana 服務器屬性等


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM