ElasticSearch 介紹

基於數據庫查詢的問題

倒排(反向)索引

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

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

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

ES 存儲和查詢的原理

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

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

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

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

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

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

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

ES 核心概念

什麼是 ES ?

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

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

  • 基於 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 不兼容的問題。

su es
cd /opt/elasticsearch-7.4.0/bin
./elasticsearch
  • 如下圖可以看到 ES 啟動成功:

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
  • 如下錶示啟動成功:

5)訪問 kibana

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

  • 左側菜單欄說明:

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

ElasticSearch、Kibana 介紹&安裝的更多相關文章

  1. elasticsearch+kibana+metricbeat安裝部署方法

    elasticsearch+kibana+metricbeat安裝部署方法 本文是elasticsearch + kibana + metricbeat,沒有涉及到logstash部分.通過beat收 ...

  2. elasticsearch kibana的安裝部署與簡單使用(一)

    1.先說說es 我早兩年使用過es5.x的版本,記得當時部署還是很麻煩,因為es是java寫的,要先在機器上部署java環境jvm之類的一堆東西,然後才能安裝es 但是現在我使用的是目前最新的7.6版 ...

  3. Elasticsearch+Kibana+Logstash安裝

    安裝環境: [[email protected] src]# cat /etc/redhat-release CentOS Linux release (Core) 安裝之前關閉防火牆 firewalld 和 se ...

  4. Elasticsearch + Kibana 簡單安裝使用

    1.資料來源官網,參考: https://www.elastic.co/cn/downloads/elasticsearch https://www.elastic.co/cn/downloads/k ...

  5. elasticsearch kibana的安裝部署與簡單使用(二)

    介紹一下elasticsearch和kibana的簡單使用 es其實我理解為一個數據庫,一個數據庫無非就是增删改查, Delete  PUT GET POST 這些接口關鍵字完美對應 比如,我想查一張 ...

  6. 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安裝詳解)

    在安裝插件的過程中,尤其是安裝Marvel插件遇到了很多問題,要下載license.Marvel-agent,又要下載安裝Kibana 版本需求 Java 7 or later Elasticsear ...

  7. 第三百五十九節,Python分布式爬蟲打造搜索引擎Scrapy精講—elasticsearch(搜索引擎)介紹以及安裝

    第三百五十九節,Python分布式爬蟲打造搜索引擎Scrapy精講—elasticsearch(搜索引擎)介紹以及安裝 elasticsearch(搜索引擎)介紹 ElasticSearch是一個基於 ...

  8. 【ELK】【docker】【elasticsearch】1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎應用 集群,安裝ik分詞器

    系列文章:[建議從第二章開始] [ELK][docker][elasticsearch]1. 使用Docker和Elasticsearch+ kibana 5.6.9 搭建全文本搜索引擎應用 集群,安 ...

  9. 三十八 Python分布式爬蟲打造搜索引擎Scrapy精講—elasticsearch(搜索引擎)介紹以及安裝

    elasticsearch(搜索引擎)介紹 ElasticSearch是一個基於Lucene的搜索服務器.它提供了一個分布式多用戶能力的全文搜索引擎,基於RESTful web接口.Elasticse ...

  10. 批量搞機(二):分布式ELK平臺、Elasticsearch介紹、Elasticsearch集群安裝、ES 插件的安裝與使用

    一.分布式ELK平臺 ELK的介紹: ELK 是什麼? Sina.餓了麼.攜程.華為.美團.freewheel.暢捷通 .新浪微博.大講臺.魅族.IBM...... 這些公司都在使用 ELK!ELK! ...

隨機推薦

  1. Tomcat免安裝配置

    大家都知道tomcat吧!因為Tomcat 技術先進.性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器,也是運行Servlet和JS ...

  2. 開啟後臺 Service 閃退

    04-29 15:36:23.395: E/ActivityThread(15275): Performing stop of activity that is not resumed: {com.e ...

  3. iptables nt

    占比特... 擴展 1.其實匹配擴展中,還有需要加-m引用模塊的顯示擴展,默認是隱含擴展,不要使用 -m 狀態檢測的包過濾-m state       --state {NEW,ESTATBLISHED ...

  4. Java基礎 靜態塊、非靜態塊、構造函數的執行順序

    Java中經常有一些靜態塊,這是用來在生成類之前進行的初始化,無論java還C++語言中的static,都是最先初始化好的.結構如下: static { 靜態語句代碼塊 } { 非靜態語句代碼塊 }  ...

  5. Raising Modulo Numbers

    Description People are different. Some secretly read magazines full of interesting girls' pictures, ...

  6. Ubuntu下配置smb服務器

    一. samba的安裝: sudo apt-get insall samba 二. 創建共享目錄: mkdir /home/user/share sodu chmod 777 /home/user/s ...

  7. Python學習筆記四,dict和set

    dict是字典dictionary的縮寫,他存放的是鍵值對key/value,用花括號錶示,格式為d={'micheal':99,'jack':88} 當我們訪問的時候直接print(d['miche ...

  8. tcp窗口滑動以及擁塞控制

    轉自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP協議作為一個可靠的面向流的傳輸協議,其可靠性和流量控制由滑動窗口協議保證,而擁 ...

  9. LeetCode題解之Balanced Binary Tree

    1.題目描述 2.問題分析 DFS. 3.代碼 bool isBalanced(TreeNode* root) { if (root == NULL) return true; && ...

  10. 牛客小白月賽7 CSL的校園卡

    CSL的校園卡 思路: bfs,用狀壓錶示走過的區域,然後和x1,y1,x2,y2構成所有的狀態,然後標記一下就可以了 代碼: #pragma GCC optimize(2) #pragma GCC ...