1、ElasticSearch-head是什麼?
ElasticSearch是一個基於Lucene的搜尋伺服器。它提供了一個分散式多使用者能力的全文搜尋引擎,基於RESTful web介面。Elasticsearch是用Java開發的,並作為Apache許可條款下的開放原始碼釋出,是當前流行的企業級搜尋引擎。 -----百度百科
而ElasticSearch-head就是一款能連線ElasticSearch搜尋引擎,並提供視覺化的操作頁面對ElasticSearch搜尋引擎進行各種設定和資料檢索功能的管理外掛,如在head外掛頁面編寫RESTful介面風格的請求,就可以對ElasticSearch中的資料進行增刪改查、建立或者刪除索引等操作。類似於使用navicat工具連線MySQL這種關係型資料庫,對資料庫做操作。
對於如何安裝ElasticSearch和ElasticSearch-head下面不做說明,百度下,網上有很多資料~
2、ElasticSearch-head頁面介紹
2.1 head外掛登陸和連線ElasticSearch
在登陸和訪問head外掛地址和ElasticSearch前需要事先在伺服器上安裝和配置好ElasticSearch以及head外掛。安裝完後,預設head外掛的web埠為9100,ElasticSearch服務的埠為9200,使用瀏覽器訪問head地址,如http://IP地址:9100/,推薦使用Chrome瀏覽器,head外掛對Chrome瀏覽器相容更佳。進入head頁面後將ElasticSearch連線輸入框中填寫正確的ElasticSearch服務地址,如http://IP地址:9200/。訪問後效果如下圖:
2.2 head外掛頁面
概覽頁面:
上圖為概覽頁面效果,簡單說明下以上5個畫了紅框的地方
1:叢集健康值。Elasticsearch 中其實有專門的衡量索引健康狀況的標誌,分為三個等級:
- green,綠色。這代表所有的主分片和副本分片都已分配。你的叢集是 100% 可用的。
- yellow,黃色。所有的主分片已經分片了,但至少還有一個副本是缺失的。不會有資料丟失,所以搜尋結果依然是完整的。不過,你的高可用性在某種程度上被弱化。如果更多的分片消失,你就會丟資料了。所以可把 yellow 想象成一個需要及時調查的警告。
- red,紅色。至少一個主分片以及它的全部副本都在缺失中。這意味著你在缺少資料:搜尋只能返回部分資料,而分配到這個分片上的寫入請求會返回一個異常。
如果只有一臺主機的話,其實索引的健康狀況也是 yellow,所有上圖顯示為yellow。因為一臺主機,叢集沒有其他的主機可以防止副本,所以說,這就是一個不健康的狀態,因此叢集也是十分有必要的。
2:表示在Elasticsearch已經建立的索引(index)。包含了索引的名稱、索引的大小(size)、索引的資料量(docs),並且通過【資訊】和【動作】可以檢視索引資訊或者給索引建別名。
3:表示Elasticsearch節點。上圖中的帶有感嘆號的Unassigned表示未分配的節點,帶有星號的表示是主節點,其節點名稱叫:Hu9Suoy,並能檢視節點資訊。
4:表示索引分片,Elasticsearch資料就儲存在這些分片中。
5:檢視Elasticsearch相關的資訊和重新整理head外掛。如檢視Elasticsearch版本資訊,如下圖:
索引頁面:
索引頁面能看到當前Elasticsearch中已經建立的索引,這裡的索引類似於傳統關係型資料庫中的一張張表,並且可以在該頁面上新建索引。
資料瀏覽頁面:
資料瀏覽頁面能檢視所有索引分片的資料
基本查詢和複合查詢頁面:
這兩個頁面做資料檢索,基本查詢頁面僅提供簡單的查詢並不能修改資料,複合查詢頁面提供編寫RESTful介面風格的請求,來對Elasticsearch中的資料進行各種增刪改查等操作請求,其頁面分別如下:
基本查詢頁面
複合查詢頁面
3、基本查詢
基本查詢頁面可以對資料進行簡單的查詢。
查詢關鍵字有三種:分別是:must,should,must_not
- must子句:文件必須匹配must查詢條件,相當於“=”;
- should子句:文件應該匹配should子句查詢的一個或多個;
- must_not子句:文件不能匹配該查詢條件,相當於“!=”;
如下圖基本查詢例項:
預設返回結果使用table展示,即表格形式,還有json、csv形式展示
其中檢索條件有諸多,如下圖:
通常term表示精確匹配,wildcard : 萬用字元匹配 prefix:字首匹配,range區間查詢,如使用wildcard查詢帶有“粵BN69”的資料:
其它的檢索條件也可以嘗試檢索下
4、複合查詢
複合查詢頁面提供編寫RESTful介面風格的請求,使用json進行復雜的查詢,也可傳送put請求新增及更新索引,使用delete請求刪除索引等等來對Elasticsearch中的資料或者索引進行各種增刪改查等操作請求。
ES以RESTFul風格來命名API的, 其API的基本格式類似如下:
以http來決定請求的方法或者動作: 常用的有GET/PUT/POST/DELETE
4.1查詢資料
比如我們查詢st_face這個索引,通過索引型別face_info(這裡的索引型別類似於mysql資料庫中建立的索引),搜尋分片屬性為time的欄位,如下圖效果:
4.2插入資料
插入資料使用POST或者PUT方法,只是POST方法為自動生成id,而PUT方法需要指明id,如下圖例項:
POST方法
PUT方法:
4.3修改資料
4.4刪除資料
刪除資料使用DELETE方法,例項如下:
注:
Head外掛中編寫json傳送請求比較複雜和不方便, 可以使用postman或者python ElasticSearch模組提供的API等工具進行請求的傳送,來實現對ElasticSearch的資料和索引進行增刪改查。
5、Python ElasticSearch模組
Python Elasticsearch模組是Python的一個第三方模組庫,需要手動安裝,如果已經安裝了pip工具,就可以直接通過命令:pip install elasticsearch一鍵安裝。Elasticsearch API封裝並提供了可操作Elasticsearch的幾乎所有動作,包括常用的Elasticsearch資料的增刪改查和索引操作。
以下是一些參考文件地址:
Elasticsearch官方API文件地址:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html
Elasticsearch模組的使用:
https://www.cnblogs.com/xiao987334176/p/10130712.html
下面通過一個例項編寫指令碼,實現連線Elasticsearch,並批量向Elasticsearch資料庫中的st_face索引中寫入資料,在PyCharm中編輯如下程式碼:
執行完成後,在Elasticsearch中檢視st_face索引中剛剛批量插入的資料,如下: