初識elasticsearch中的REST接口

前面向讀者介紹了Elasticsearch的安裝和基本配置,同時也向讀者介紹了Elasticsearch中的核心概念,相信讀者對Elasticsearch的使用已經有了一個初步的瞭解,接下來,向讀者介紹Elasticsearch中的REST命令,這是Elasticsearch提供的一整套強大的REST命令,來實現對集羣的操作。接下來向讀者詳細介紹這個東西。

本文是Elasticsearch系列的第二篇,閱讀前面的文章,有助於更好的理解本文:


1.elasticsearch安裝與配置


REST接口

當節點和集羣啓動後,下一步就是要考慮如何與節點和集羣進行通信,幸運的是,Elasticsearch提供了一個非常全面和強大的REST API,開發者利用這個REST API,可以實現與集羣之間的交互。這一套REST API主要提供瞭如下幾個功能:

  • 檢查集羣、節點和索引的健康信息、狀態以及各種統計信息
  • 管理集羣、節點、索引數據以及元數據
  • 對索引進行 CRUD(創建、讀取、更新和刪除)和搜索操作
  • 執行高級的搜索操作, 例如分頁、排序、過濾、腳本編寫(scripting)、聚合(aggregations)以及其它操作

上面向讀者介紹了Elasticsearch提供的REST API所具有的基本功能,接下來,我們就來看看這些基本功能具體如何操作。

集羣操作

由於是REST API,讀者可以使用POST MAN,RESTClient等工具完成下面的測試,也可以直接使用curl命令來完成下面的測試。對於一些簡單的如GET請求,也可以直接在瀏覽器中完成測試。

集羣健康信息

使用如下命令可以查看集羣健康信息:

curl -X GET "localhost:9200/_cat/health?v"

查看結果如下:

圖片描述

從這個響應中,我們可以看到集羣的名稱,狀態,節點數,分片數等等,其中:

  1. 狀態有green、yellow和red三種,green表示目前集羣運行一切OK,集羣功能齊全;yellow表示集羣所有數據都是可用的,集羣功能也齊全,不過某些複製沒有被分配;red則表示集羣的部分數據不可用,集羣的功能也是不全的,但是集羣還是可以運行的,它可以繼續處理搜索請求,不過開發者要儘快修復它。
  2. 另外從響應結果中,我們可以看到一共有一個節點,一個分片等信息。
  3. 因爲我之前已經安裝了Kibana,所以這裏的信息實際上反應了Kibana的部分信息,讀者如果沒有安裝Kibana,這裏的響應結果和我的可能有差異,不過參數含義都是一致的,關於Kibana,我們在後文會向讀者介紹。

通過如下請求可以查看節點的詳細信息:

curl -X GET "localhost:9200/_cat/nodes?v"

請求結果如下:

圖片描述

可以看到,我們的節點名爲iFO7DC9

查看所有索引

通過如下命令可以查看所有索引:

curl -X GET "localhost:9200/_cat/indices?v"

請求結果如下:

圖片描述

從圖中可以看到集羣中索引的信息。

創建一個索引

接下來,通過如下命令,我們可以創建一個名爲customer的索引,並重新列出所有索引:

curl -X PUT "localhost:9200/customer?pretty"
curl -X GET "localhost:9200/_cat/indices?v"

執行結果如下:

圖片描述

請求命令解釋:

  1. 第一個,通過一個PUT請求,添加了一個名爲customer的索引,末尾加上pretty參數,表示請求響應的JSON格式化之後打印出來,方便開發者閱讀。這是一個通用的參數,當需要格式化響應JSON時,都可以使用這個參數。
  2. 第二個請求表示查看所有的索引,其中就有我們剛剛創建的索引customer,該索引有5個分片1個複製,沒有文檔,但是注意該索引的status爲yellow,根據前文的介紹,黃色表示某些複製沒有被分配。這是因爲elasticsearch默認爲索引創建一份複製,而現在只有一個節點在運行,因此複製就分配不了了,當另外一個節點加入到這個集羣后才能分配,分配成功後,這個節點的健康狀態就會變成綠色。

查詢文檔

通過如下請求可以添加一個文檔:

curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}'

這個請求表示在customer中的_doc類型中添加一個文檔,文檔id爲1,該命令執行結果如下:

圖片描述

小貼士:

Elasticsearch中,並不強制要求顯式的創建索引,即前面案例中,如果開發者在添加文檔之前,還沒有創建customer索引,那麼該文檔一樣也會創建成功的(此時索引會被自動創建)。

通過如下命令可以獲取一個文檔,最後面的1表示獲取id爲1的文檔:

curl -X GET "localhost:9200/customer/_doc/1?pretty"

圖片描述

刪除索引

通過如下命令可以刪除一個索引:

curl -X DELETE "localhost:9200/customer?pretty"
curl -X GET "localhost:9200/_cat/indices?v"

DELETE請求可以用來刪除一個索引,該命令執行結果如下:

圖片描述

可以看到,customer索引已經被成功刪除了。

小結

這裏向讀者介紹的索引操作都是很常規,很簡單的操作,後面會向讀者介紹複雜的索引操作。
另外,讀者總結上面的REST API格式,可以發現,API格式爲:

curl -X <HTTP Verb> /<Index>/<Type>/<ID>

事實上,這個格式適用於所有的API,如果能記住它,對我們後面的學習會有很大的幫助。

好了,本文就先介紹到這裏,有問題歡迎留言討論。

圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章