1. 程式人生 > >ElasticSearch與Kibana外掛安裝及簡介(一)

ElasticSearch與Kibana外掛安裝及簡介(一)

ElasticSearch簡介

全文搜尋屬於最常見的需求,開源的 Elasticsearch(以下簡稱 Elastic)是目前全文搜尋引擎的首選。

它可以快速地儲存、搜尋和分析海量資料。維基百科、Stack Overflow、Github 都採用它。
image

Elastic 的底層是開源庫 Lucene。但是,你沒法直接用 Lucene,必須自己寫程式碼去呼叫它的介面,比如我用的就是Python
同時Elastic 是 Lucene 的封裝,提供了 REST API 的操作介面,開箱即用,即curl命令。

本文從零開始,記載一下在學習使用Elastic的心得和筆記,以及它簡單的原理。

Ubuntu環境下ElasticSearch安裝

首先本人環境是ubuntu18.04。

Elastic需要JAVA的環境,所以如果機器沒有Java需要提前配置。我的電腦是ubuntu18.04 ,系統自帶Java10的環境。

ubuntu檢測 java環境: 在Terminate(終端)鍵入: java -version
顯示

openjdk version "10.0.2" 2018-07-17
OpenJDK Runtime Environment (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2)
OpenJDK 64-Bit Server VM (build 10.0.2+13-Ubuntu-1ubuntu0.18.04.2, mixed mode)

表示java環境已經配好。

然後直接去ElasticSearch官網下載對應版本。

推薦不要下最新的,因為可能好用的外掛沒有更新適配,或者語法修改了,最新學習資料不好找。我下載是6.2.4

elasticsearch-head管理工具安裝(不推薦)

服了,參考部落格搞了一晚上(實驗室垃圾網速20kb/s),安裝過程很順利。但我遇到localhost:9200顯示總是連線不上,嘗試部落格1,部落格2等各種方法,裝了卸,未果,浪費一晚上,棄療保平安,換下面Kibana一次就成功!

唯一值得嘗試elasticsearch-head的理由可能是它使用介面匹配了中文…(暴露英語差)。

Kibana 管理工具安裝(推薦)

Kibana 是一個開源分析和視覺化平臺,旨在視覺化操作 Elasticsearch 。Kibana可以用來搜尋,檢視和與儲存在 Elasticsearch 索引中的資料進行互動。可以輕鬆地進行高階資料分析,並可在各種圖表,表格和地圖中顯示資料。

Kibana 可以輕鬆理解海量資料。其簡單的基於瀏覽器的介面使您能夠快速建立和共享動態儀表板,實時顯示 Elasticsearch 查詢的更改。

安裝Kibana簡單快速。您可以安裝 Kibana ,並在幾分鐘內開始探索您的 Elasticsearch 索引 - 不需要程式碼,也不需要需額外的基礎架構。

安裝過程:

官網 下載對應ElastiSearch的版本。 我推薦下載.tar格式,然後解壓到本地。

這時候可以選擇先配置/config/kibana.yml檔案。
sudo gedit kibana.yml

server.port: 5601 (預設)  //kibana埠

server.host: ip (預設localhost)  //服務的ip

server.name: //kibana例項名稱

elasticsearch.url: //elasticsearch地址,預設http://localhost:9200

儲存之後,在/bin/檔案裡,啟動Kibana: ./kibana

然後瀏覽器鍵入localhost:5601

Ik分詞工具安裝

首先安裝分詞器IK,當然你也可以安裝別的。
IK的官方github找到對應ES version.
我的ES是6.2.4,推薦使命令列線上下載方式:
進到你的elasticsearch目錄裡,輸入:

./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip

這裡面6.2.4換成你的es版本對應的Ik版本。
下載完後,重新啟動elasticsearch,Ik即自動執行。

然後,新建一個 Index,指定需要分詞的欄位。這一步根據資料結構而異,下面的命令只針對本文。基本上,凡是需要搜尋的中文欄位,都要單獨設定一下。

curl -H "Content-type:application/json" -X PUT 'localhost:9200/accounts' -d '{
  "mappings": {
    "person": {
      "properties": {
        "user": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "title": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        },
        "desc": {
          "type": "text",
          "analyzer": "ik_max_word",
          "search_analyzer": "ik_max_word"
        }
      }
    }
  }
}'

上面新建一個指定的index命令中,analyzer是欄位文字的分詞器,search_analyzer是搜尋詞的分詞器。ik_max_word分詞器是外掛ik提供的,可以對文字進行最大數量的分詞。

curl -H "Content-type:application/json"  -X PUT 'localhost:9200/accounts/person/1' -d '
{
  "user": "張三",
  "title": "工程師",
  "desc": "資料庫管理"
}' 

學習過程參考的資料

ElastiSearch中文社群

該部落格版本有點老,部分安裝步驟參考於此

阮一峰大佬部落格質量很高,後面curl命令操作也是學習於此

python操作Es的例項:該部落格給的例子和程式碼很詳細

python操作於ES:崔大佬的部落格,質量也很高,言簡意賅,通俗易懂

bulk批量匯入資料到ES

python 的 xlrd包操作xlxs檔案