ElasticSearch與Kibana外掛安裝及簡介(一)
ElasticSearch簡介
全文搜尋屬於最常見的需求,開源的 Elasticsearch(以下簡稱 Elastic)是目前全文搜尋引擎的首選。
它可以快速地儲存、搜尋和分析海量資料。維基百科、Stack Overflow、Github 都採用它。
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": "資料庫管理"
}'