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

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

ElasticSearch 是一個分佈式、高擴展、高實時的搜索與數據分析引擎,它能很方便的使大量數據具備搜索、分析和探索的能力,簡稱es。本文分五部分描述,es的安裝,head插件安裝,es的基本概念,es的基本使用,問題總結。node

目錄

es安裝git

head插件安裝github

es基本概念sql

es基本使用數據庫

問題總結npm

1、es安裝

安裝方式網絡上有不少,這裏簡單說下步驟,具體實踐是很簡單的json

①配置java環境

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

②安裝elasticsearch

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

③啓動elasticsearch

es的配置文件在config目錄下,經常使用配置在elasticsearch.yml文件。我這裏只是作學習目的,因此不修改此文件而直接啓動es。在windows環境下啓動es方法爲命令行進入到bin\目錄下,執行elasticsearch.bat,或者雙擊此文件以啓動es。
啓動日誌以下:

es的默認端口是9200,在瀏覽器打開網址:localhost:9200,出現以下截圖,則說明es已經安裝成功了

es的安裝是否是很簡單?接下來來安裝head插件

2、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的基本概念及基本使用。

3、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 

4、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

5、問題總結

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/
相關文章
相關標籤/搜索