繼 上一篇文章 之後,算是對於 Elasticsearch 的基本架構有一些概念了。
接著我們將使用 Elasticsearch 提供的 endpoint 來探索內容,得到更多的資訊。
健康狀態
回到 Kibana 的頁面,打開側邊欄,往下滑會看到一個 Dev Tools 的選項:
點擊後,會進入到一個新的介面,左半邊的區塊是可以輸入指令的地方,還記得 Elasticsearch 是有提供 REST API 讓我們進行溝通嗎?
左半邊的區塊就可以根據 HTTP 的 GET, POST, PUT, DELETE 這些名詞進行 CRUD 的動作,其實這只是 Kibana 的套殼,你完全可以用 cURL 或是 Postman 這類的工具進行操作。
就直接使用 GET /_cluster/health 來獲取整個叢集的健康狀態試試看:
右邊就可以看到叢集的一些基本資料,包含叢集名稱,是否健康等等。
而對於熟悉 REST API 的人來說,路徑就是很基本的概念,可以解釋成是對叢集執行了 health
的指令。
至於右邊的畫面中有沒有什麼重要的內容呢?有,但現在說也沒什麼意義,跳過,只要知道 Green 很健康,Red 很完蛋就可以了。
_cat endpoint
接著使用另外一個 endpoint 來查看一些叢集的訊息。
為什麼要取做 _cat 呢?
ChatGPT 告訴我說是因為致敬 Unix 系統中的 cat
指令,我們在 macOS 中使用 cat
也可以抓取到檔案中的內容並顯示,我覺得很合理,所以應該是沒錯。
cat 是 concatenate and display 的縮寫,不是貓喔!
所以使用 GET /_cat/nodes 也就意味著去抓取和顯示叢集內節點的資訊。
但顯示出的結果是:
192.168.228.2 46 100 0 2.27 2.46 2.32 cdfhilmrstw * 04354d93184d
雖然可以猜出來大概是什麼,但還是很不清楚,所以我們加上 ?v
的 parameter 去要求 Elasticsearch 加上 header 方便我們理解。
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.228.2 39 100 0 2.54 2.48 2.34 cdfhilmrstw * 04354d93184d
這樣我們就可以更清楚的知道,這些資訊代表什麼,有一些數據的監測,記憶體, CPU 的用量等等。
至於關於 node.role
以及 master node
之後都會介紹!
如果你是在 Elastic Cloud 上執行,或許會看到不一樣的 IP 甚至多個節點都是正常的
查看索引
上一篇文章 中,我們介紹了 index 是用來儲存 documents 的單位,當然也可以使用 cat
來查看索引的狀況。
使用 GET /_cat/indices?v 就可以查看叢集內的索引。
indices 是 index 的複數名詞
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
接著我們會看到空的索引,那很正常,因為還沒有替這個叢集建立任何的索引。
但還是可以查看一些有趣的東西,使用 GET /_cat/indices?v&expend_wildcard=all 就可以列出叢集的基本索引:
這些索引是什麼?是 Elasticsearch 以及 Kibana 的系統索引,負責儲存一些系統的基本設定,像是 Kibana 的設定就儲存在 Elasticsearch 內。
所以當今天建構了一個 Kibana 的網站去連接別的 Elasticsearch,所看到的設定就會是另外一個叢集的設定。
而這些系統索引也都有一些規範,像是 index 的命名前面也都有加上 .
的符號,就像 Unix 系統的隱藏檔案也都會有 .
的符號,這也就是為什麼要加上 expend_wildcard=all
的原因,才可以看到這些系統索引。
結語
使用 Dev tools 可以讓我們很輕鬆地和 Elasticsearch 進行溝通,但也不要被工具給限制了,透過 cURL 也可以做到一樣的事,意味著透過你的應用程式,也可以做一樣的事情。