Windows下ElasticSearch的Head安裝及基本使用

溫一壺清酒發表於2019-07-22

前段時間,有一朋友諮詢我,說es的head外掛一直安裝失敗,為了給朋友解惑,自己百度博文並實踐了一番,也的確踩了些坑,但我給爬了起來。今天就來分享下實踐心得並跳過的坑。

ElasticSearch 是一個分散式、高擴充套件、高實時的搜尋與資料分析引擎,它能很方便的使大量資料具有搜尋、分析和探索的能力,簡稱es。本文分五部分描述,es的安裝,head外掛安裝,es的基本概念,es的基本使用,問題總結。

目錄

es安裝

head外掛安裝

es基本概念

es基本使用

問題總結

一、es安裝

安裝方式網路上有很多,這裡簡單說下步驟,具體實踐是很簡單的

①配置java環境

需要java環境,最好是較新的java環境,java環境的配置就略過了

②安裝elasticsearch

下載地址:https://www.elastic.co/cn/downloads/elasticsearch,最新版本已是7.2.0。下載後,解壓到任意目錄,我的路徑是:D:\elasticsearch-7.2.0

③啟動elasticsearch

es的配置檔案在config目錄下,常用配置在elasticsearch.yml檔案。我這裡只是做學習目的,所以不修改此檔案而直接啟動es。在windows環境下啟動es方法為命令列進入到bin\目錄下,執行elasticsearch.bat,或者雙擊此檔案以啟動es。
啟動日誌如下:

es的預設埠是9200,在瀏覽器開啟網址:localhost:9200,出現如下截圖,則說明es已經安裝成功了

es的安裝是不是很簡單?接下來來安裝head外掛

二、head外掛安裝

1.安裝node

es5以上就需要安裝node和grunt,所以安裝head外掛的前提,是需要把該兩項配置好。

node下載地址:https://nodejs.org/en/download/,下載對應環境的node版本安裝即可,安裝步驟略過了。

安裝過程結束後,在dos視窗檢視是否安裝成功,使用命令:node -v,出現如下截圖,則說明安裝成功。

2.安裝grunt

在node安裝路徑下,使用命令安裝:npm install -g grunt-cli 安裝grunt。

安裝結束後,使用命令grunt -version檢視是否安裝成功,出現如下截圖,說明安裝成功。

3.安裝head外掛

①下載head外掛

下載地址:https://github.com/mobz/elasticsearch-head,下載zip包

②解壓zip包

我的解壓路徑:D:\elasticsearch-7.2.0\elasticsearch-head-master

③安裝pathomjs

在dos視窗進入到head路徑下,使用命令npm install安裝pathomjs

④啟用服務

使用命令npm start啟用服務,出現如下截圖,則說明服務啟動成功

4.瀏覽器中訪問

使用地址:localhost:9100訪問,出現如下截圖,則說明head安裝成功,預設埠是9100

es和head外掛都已安裝成功,接下來介紹下es的基本概念及基本使用。

三、es的基本概念

①叢集和節點

一個es叢集是由一個或多和es節點組成的集合,每一個叢集都有一個名字,每個節點都有自己的名字,節點是可以儲存資料, 參與索引資料的獨立服務。

②索引(類似於資料庫裡面的database)

索引是含有相同屬性的文件集合,索引在es中是通過一個名字來識別的,必須是英文字母小寫,且不含中劃線。

③型別(相當於sql中的table)

一個索引可以定義一個或多個型別,文件必須屬於一個型別

④文件(相當於sql中的一行記錄)

文件是可以被索引的基本資料單位

⑤分片

每個索引都有多個分片,每個分片都是一個luncene索引,分片的好處:分攤索引的搜尋壓力,分片還支援水平的擴充和拆分以及分散式的操作,可以提高搜尋和其他處理的效率。

⑥備份

拷貝一個分片就完成了分片的備份,備份的好處:當主分片失敗或者掛掉,備份就可以代替分片進行操作,進而提高了es的可用性,備份的分片還可以進行搜尋操作,以分攤搜尋的壓力。es在建立索引時,預設建立5個分片,一份備份,可以修改,分片的數量只能在建立索引的時候指定,索引建立後就不能修改分片的數量了,而備份是可以動態修改的。

⑦資料型別

核心型別 字串型別 string,text,keyword 
整數型別 integer,long,short,byte 
浮點型別 double,float,half_float,scaled_float 
邏輯型別 boolean 
日期型別 date 
範圍型別 range 
二進位制型別 binary 
複合型別 陣列型別 array 
物件型別 object 
巢狀型別 nested 
地理型別 地理座標型別 geo_point 
地理地圖 geo_shape 
特殊型別 IP型別 ip 
範圍型別 completion 
令牌計數型別 token_count 
附件型別 attachment 
抽取型別 percolator 

四、es基本使用

1.es基本格式

es是以RESTFul風格來命名API的,其API的基本格式如下:
http://<ip>:<port>/<索引>/<型別>/<文件id>
這裡需要注意的是,該格式從es7.0.0開始,移除Type(型別)這個概念,新的基本格式如下:
http://<ip>:<port>/<索引>/_doc/<文件id>
Type(型別)欄位那裡變為固定值 _doc
es的動作是以http方法來決定的: 常用的http方法: GET/PUT/POST/DELETE

2.建立索引

在head外掛中建立,操作如下:

點選索引>新建索引

彈出該提示,則說明建立成功

3.檢視索引資訊

點選概覽檢視建立情況

建立索引分為: 結構化建立與非結構化建立

檢視索引是否是結構化的方法:點選剛建立的索引資訊,可檢視到如下所示資訊:

Mappings是結構化的一個關鍵詞,其後內容是空的,說明這個索引是一個非結構化的索引。

4.建立結構化索引

點選head外掛的“複合查詢”,輸入內容如下:

勾選易讀,點選驗證json,可以檢測json格式是否正確

請求方式選擇post,點選提交請求,返回如下截圖資料,則表示建立成功

建立成功後,可以返回到概覽中檢視索引資訊,如下:

也可以直接在複合查詢中,改成get請求方式,提交請求,檢視資料:

5.資料插入

文件id, 唯一索引值, 指向文件資料

①指定文件id插入

 使用http中的put方法,插入時輸入的ip地址,http://localhost:9200/test/_doc/1

請求引數依次為:索引名稱/型別名稱/文件id

請求引數

{
"duty": "技術",
"age": 22,
"name": "一壺清酒",
"date": "2019-07-21 11:00:00"
}

如下圖所示:

在資料瀏覽中可檢視到該條資料,如下所示:

②自動產生文件id插入

使用http中的post方法,插入時輸入的ip地址:http://localhost:9200/test/_doc

請求引數

{
"duty": "測試",
"age": 25,
"name": "溫一壺清酒",
"date": "2019-07-21 11:05:00"
}

依然到資料瀏覽中檢視資料,如下所示,id為自動生成:

③postman插入資料

操作方式一樣,只是改成了postman而已,入參如下所示:

到資料瀏覽處檢視資料,如下:

 postman的操作,就只引用了這一個例子,其他操作都一樣,所以就不再贅述。

6.修改文件資料

①直接修改文件

http方法: post方法

請求地址:  

http://localhost:9200/test/_doc/1/_update

請求引數

{
"doc": {
"duty": "技術",
"age": 22,
"name": "我是一壺清酒",
"date": "2019-07-21 11:06:00"
}
}

關鍵詞: _update,doc

“doc”為關鍵字,要修改的文件放在doc中, 例項修改了type為test索引下_doc中id為1 的name和date屬性

到資料瀏覽處檢視修改後的資料,如下:

②指令碼修改文件

通過指令碼修改的api格式與直接修改的是一致的

http方法: post方法

請求地址:

http://localhost:9200/test/_doc/1/_update

請求引數

{

  "script": {

    "lang": "painless",

    "inline": "ctx._source.age += 30"

  }

}

關鍵字”script”: 標誌以指令碼的方式修改文件

“lang”:表示以何種指令碼語言進行修改,“painless”表示以es內建的指令碼語言進行修改。此外es還支援多種指令碼語言,如Python,js等等

“inline”:指定指令碼內容 “ctx”代表es上下文,_source 代表文件

檢視資料,age增加了5,如下所示:

 7.刪除文件

http方法: delete

請求地址:

http://localhost:9200/test/_doc/1

 操作如下:

 

到資料瀏覽處檢視資料,已沒用id為1的文件了,如下所示:

8.刪除索引

①索引概覽中刪除

點選已有索引的動作,會有個刪除操作,如下:

輸入刪除,點選確定,該索引就被刪除了,會返回一個true的提示框

再次檢視,就只有一個索引了

②通過api刪除

http方法: delete

請求地址:

http://localhost:9200/demo

五、問題總結

1.grunt不是內部或外部命令

使用命令npm start啟用服務時,報grunt不是內部或外部命令,如下所示:

解決辦法:

將node安裝路徑,加到環境變數path路徑下,重啟dos視窗即可。

2.head服務啟用失敗

使用npm start命令啟用服務,報錯如下:

解決辦法:

在es路徑下執行命令 npm install,因為沒有安裝pathomjs,所以導致報錯

3.提示未連線

head服務啟用成功,通過localhost:9100訪問,提示叢集健康值:未連線

解決辦法:

需要在elasticsearch.yml檔案中增加以下配置:

http.cors.enabled: true

http.cors.allow-origin: "*"

說明:

http.cors.enabled:true 如果啟用了 HTTP 埠,那麼此屬性會指定是否允許跨源 REST 請求。

http.cors.allowed.origin:"*" 如果 http.cors.enabled 的值為 true,那麼該屬性會指定允許 REST 請求來自何處。

重啟服務,再次訪問,則恢復正常

 

小結

全文通讀到此,發現ElasticSearch的安裝、head外掛的安裝其實很簡單,並不是那麼難。es的使用,就需要學習些基本的概念,知識的海洋是淵博的,此次介紹的es的使用,也只是簡單的增刪改查,屬於很淺薄的知識。自己在摸索的時候,也是一點一點學習,百度以前前輩們的博文學習、摸索。只要努力,遇到問題,積極去解決,我相信一定會成功。文中觀點,有誤之處,歡迎批評指正

 

本文僅代表作者觀點,系作者@溫一壺清酒發表。
歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
文章出處:http://www.cnblogs.com/hong-fithing/

相關文章