Website logo

Robert Chang

技術部落格

Elasticsearch - 探索叢集

上一篇文章 之後,算是對於 Elasticsearch 的基本架構有一些概念了。

接著我們將使用 Elasticsearch 提供的 endpoint 來探索內容,得到更多的資訊。

健康狀態

回到 Kibana 的頁面,打開側邊欄,往下滑會看到一個 Dev Tools 的選項:

screen shot

點擊後,會進入到一個新的介面,左半邊的區塊是可以輸入指令的地方,還記得 Elasticsearch 是有提供 REST API 讓我們進行溝通嗎?

左半邊的區塊就可以根據 HTTP 的 GET, POST, PUT, DELETE 這些名詞進行 CRUD 的動作,其實這只是 Kibana 的套殼,你完全可以用 cURL 或是 Postman 這類的工具進行操作。

就直接使用 GET /_cluster/health 來獲取整個叢集的健康狀態試試看:

screen shot

右邊就可以看到叢集的一些基本資料,包含叢集名稱,是否健康等等。

而對於熟悉 REST API 的人來說,路徑就是很基本的概念,可以解釋成是對叢集執行了 health 的指令。

至於右邊的畫面中有沒有什麼重要的內容呢?有,但現在說也沒什麼意義,跳過,只要知道 Green 很健康,Red 很完蛋就可以了。

_cat endpoint

接著使用另外一個 endpoint 來查看一些叢集的訊息。

為什麼要取做 _cat 呢?

ChatGPT 告訴我說是因為致敬 Unix 系統中的 cat 指令,我們在 macOS 中使用 cat 也可以抓取到檔案中的內容並顯示,我覺得很合理,所以應該是沒錯。

cat 是 concatenate and display 的縮寫,不是貓喔!

所以使用 GET /_cat/nodes 也就意味著去抓取和顯示叢集內節點的資訊。

screen shot

但顯示出的結果是:

192.168.228.2 46 100 0 2.27 2.46 2.32 cdfhilmrstw * 04354d93184d

雖然可以猜出來大概是什麼,但還是很不清楚,所以我們加上 ?v 的 parameter 去要求 Elasticsearch 加上 header 方便我們理解。

screen shot
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 就可以列出叢集的基本索引:

screen shot

這些索引是什麼?是 Elasticsearch 以及 Kibana 的系統索引,負責儲存一些系統的基本設定,像是 Kibana 的設定就儲存在 Elasticsearch 內。

所以當今天建構了一個 Kibana 的網站去連接別的 Elasticsearch,所看到的設定就會是另外一個叢集的設定。

而這些系統索引也都有一些規範,像是 index 的命名前面也都有加上 . 的符號,就像 Unix 系統的隱藏檔案也都會有 . 的符號,這也就是為什麼要加上 expend_wildcard=all 的原因,才可以看到這些系統索引。

結語

使用 Dev tools 可以讓我們很輕鬆地和 Elasticsearch 進行溝通,但也不要被工具給限制了,透過 cURL 也可以做到一樣的事,意味著透過你的應用程式,也可以做一樣的事情。

上一篇文章Elasticsearch - 基本架構

下一篇文章Elasticsearch - Primary Shard 主要分片