初識elasticsearch中的REST介面
前面向讀者介紹了Elasticsearch的安裝和基本配置,同時也向讀者介紹了Elasticsearch中的核心概念,相信讀者對Elasticsearch的使用已經有了一個初步的瞭解,接下來,向讀者介紹Elasticsearch中的REST命令,這是Elasticsearch提供的一整套強大的REST命令,來實現對叢集的操作。接下來向讀者詳細介紹這個東西。
本文是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"
檢視結果如下:
從這個響應中,我們可以看到叢集的名稱,狀態,節點數,分片數等等,其中:
- 狀態有green、yellow和red三種,green表示目前叢集執行一切OK,叢集功能齊全;yellow表示叢集所有資料都是可用的,叢集功能也齊全,不過某些複製沒有被分配;red則表示叢集的部分資料不可用,叢集的功能也是不全的,但是叢集還是可以執行的,它可以繼續處理搜尋請求,不過開發者要儘快修復它。
- 另外從響應結果中,我們可以看到一共有一個節點,一個分片等資訊。
- 因為我之前已經安裝了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"
執行結果如下:
請求命令解釋:
- 第一個,通過一個PUT請求,添加了一個名為customer的索引,末尾加上pretty引數,表示請求響應的JSON格式化之後打印出來,方便開發者閱讀。這是一個通用的引數,當需要格式化響應JSON時,都可以使用這個引數。
- 第二個請求表示檢視所有的索引,其中就有我們剛剛建立的索引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,如果能記住它,對我們後面的學習會有很大的幫助。
好了,本文就先介紹到這裡,有問題歡迎留言討論。