騰訊雲 Elasticsearch 運維篇(十二)API訪問ES集群

  • 2020 年 2 月 21 日
  • 筆記

前言

上一章節,我們通過騰訊雲控制台快速搭建了一個ES集群,通過Kibana我們在公網能進行安全的訪問。同時,我們在Kibana裡邊針對不同的索引需求新建了不同的賬戶進行登錄測試。往往實際情況是我們在騰訊雲上有多台主機,多個集群,我們需要通過內網去訪問和操作ES集群,所以,今天來講講這個問題。

實際案例:比如我是一個IT公司的資訊管理人員,我需要買200雲上伺服器。那麼我就會首先找到騰訊雲官網,通過自己的帳號登錄。根據自己的需求選型,最終下單購買。那麼伺服器購買的過程中,你肯定要考慮這個IP規劃的問題。你既要考慮現在的需求、又要考慮後期的擴展與安全設置。請看下圖:

雲服務網路架構

總結: 從上面這個圖裡我們應該明白一個VPC標識一個專屬私有網路,一個私有網路可以劃分為多個子網,每個子網間的服務是連通的。VPC之間需要通過NAT或者專門的VPN網管才能實現跨VPC訪問。

解決了網路問題,我們繼續說API訪問ES集群。騰訊雲 ES 構建在用戶 VPC 內,用戶可以通過位於同一 VPC 下的 CVM 作為客戶端,訪問 ES 集群。要連接ES集群,首先要知道ES集群的內網IP。

一、查看ES集群的內網地址

在控制台-集群列表頁,單擊【集群 ID】進入詳情頁,在基礎配置中可查看內網地址。我這裡IP是:10.1.0.7:9200

查看ES集群內部IP

二、構建CVM(雲主機)

在自己構建的VPC里找一台雲主機,如果沒有,就新購一台雲主機(CVM)。這裡的IP為:10.1.0.14,與ES內網IP同網段

雲主機IP

三、連接ES集群IP

因為我們是用雲主機來測試ES集群的連通性,所以,我們就要用到Curl命令,那麼我們使用Curl命令來操作測試ES集群。注意:可以通過 curl 的方式測試訪問集群,但不支援通過 ping 的方式測試連通性。

第一步:測試服務是否可以訪問:命令如下:curl -XGET http://10.1.0.7:9200 圖示:

錯誤提示

提示需要安全認證,因為我們的版本為6.8.2白金版,其訪問集群的時候需要用戶認證。所以,使用如下命令來登錄:

執行 curl -XGET -u elastic http://10.1.0.7:9200 命令,然後按要求提示輸入密碼即可。如下圖:

Curl密碼登錄

返回結果:ES集群訪問成功

Curl返回結果

當然,Curl口令默認參數就是-XGET,所以不用帶,而且,"-u"參數也可以放到最後,所以,上面的命令也可以這樣:

Curl命令認證使用

返回的結果跟上面一致:如下

curl 返回結果

四、基於CVM下來操作ES集群

第一:查看集群狀態API選項 curl http://10.1.0.7:9200/_cat -u elastic

_cat API

第二:查看節點資訊

使用命令: curl http://10.1.0.7:9200/_cat/nodes?v -u elastic 」-v「是現實詳細資訊

現實集群詳細資訊

第三. 查看master節點資訊

curl http://10.1.0.7:9200/_cat/master?v -u elastic master一般用」*「作標識。

Master資訊

第四、查看集群的健康狀態

curl http://10.1.0.7:9200/_cat/health?v -u elastic

集群狀態

可以看到我們的集群叫做"es-*",並且狀態是綠色。無論何時我們去請求集群的健康狀態我們會得到三種:green, yellow, red

  • green 意味著所有功能都是完好的
  • yellow 意味著所有數據是可用的,但是一些副本還沒有被分配
  • red 代表一些數據由於某些原因已經不可用。注意,儘管一個集群是red狀態,它仍然可以提供部分服務(比如,它會繼續從可用的切片數據里搜索),但是在你失去部分數據後,你需要盡你最快的速度去修復它。

集群狀態說明:

集群狀態是反映集群是否在變更中或正常使用的狀態,包括:正常、處理等,具體含義如下:

集群狀態的含義

其中健康狀態是 ES 集群眾多監控資訊中非常重要的一個,用來表徵集群總體上是否工作正常。健康狀態種類如下:

集群健康狀態

第五:創建索引

curl -XPUT 比如:創建一個"test_hezhen"的索引 使用命令:curl -XPUT http://10.1.0.7:9200/test_hezhen?pretty -u elastic

CURL創建一個索引

第六:查看索引

curl 'http://10.1.0.7:9200/_cat/indices?v' -u elastic

查看索引

查看某一個索引使用如下命令:

curl -XGET 'http://10.1.0.7:9200/test_one/doc/_search?pretty' -H 'Content-Type: application/json' -u elastic

索引查詢

第七:刪除索引

刪除索引

第八:創建文檔

有兩種方法:

1. 使用PUT來創建文檔,需要指定id

curl -XPUT "http://10.1.0.7:9200/test_one/doc/1?pretty" -H "Content-Type: application/json" -d '{"name": "john", "age": 30}' -u elastic

創建文檔
2. 使用POST來創建文檔,可以不指定id(不指定時隨機生成id)

curl -XPOST "http://10.1.0.7:9200/test_one/doc?pretty" -H "Content-Type: application/json" -d '{"name": "david", "age": 20}' -u elastic

創建文檔

第九、 查看文檔

curl http://10.1.0.7:9200/test_one/doc/1?pretty -u elastic 如下圖

查看文檔

或者curl http://10.1.0.7:9200/test_one/doc/_search?pretty -u elastic 如下圖:

_search API

第十、替換或者更新文檔

使用PUT並指定id時,es會使用新的文檔替換原文檔,如下:

curl -XPUT "http://10.1.0.7:9200/test_one/doc/1?pretty" -H "Content-Type: application/json" -d '{"name": "AAA", "age": 38}' -u elastic

替換或者更新文檔

已經替換,再查看確認一下 curl "http://10.1.0.7:9200/test_one/doc/1?pretty" -u elastic

更新文檔

文檔替換成功。

第十一、刪除文檔

curl -XDELETE "http://10.1.0.7:9200/test_one/doc/1?pretty" -u elastic 如下圖

刪除文檔

總結:

本節模擬CVM內網環境下如何通過去管理ES6.8白金版集群,並實現了對集群文檔的CRUD,以及搜索等內容。CURL指令非常有效率的執行維護工作。有幾點要注意:

1,elastic用戶是系統默認的授權用戶。

2,在通過公網登錄Kibana去訪問ES,有一定時間限制。如超過一定時間需要重新登錄Kibana,否則會報認證錯誤。

3,執行curl 認證的登錄ES的時候不需要把密碼直接輸入在控制台上。需要密文輸入。否則報錯。