Elasticsearch集羣管理

ES經過設置【節點的名字】和【集羣的名字】,就能自動的組織相同集羣名字的節點加入到集羣中,並使不少的技術對用戶透明化。html

若是用戶想要管理查看集羣的狀態,能夠經過一些REST API來實現。node

其餘的ES文檔翻譯參考:Elasticsearch文檔總結數據庫

REST API用途

ES提供了不少全面的API,大體能夠分紅以下幾種:ubuntu

1 檢查集羣、節點、索引的健康狀況windows

2 管理集羣、節點,索引數據、元數據curl

3 執行CRUD,建立、讀取、更新、刪除 以及 查詢elasticsearch

4 執行高級的查詢操做,好比分頁、排序、腳本、聚合等ide

查看集羣狀態

能夠經過CURL命令發送REST命令,查詢集羣的健康狀態:ui

curl 'localhost:9200/_cat/health?v'

Localhost是主機的地址,9200是監聽的端口號,ES默認監聽的端口號就是9200.url

這裏須要注意的是,windows下安裝的CURL有可能不支持單引號,若是有報錯,還請改爲雙引號,內部使用轉義字符轉義。

獲得的相應結果:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign
1394735289 14:28:09  elasticsearch green           1         1      0   0    0    0        0

能夠看到集羣的名字是默認的"elasticsearch",集羣的狀態時"green"。這個顏色以前也有說過:

1 綠色,最健康的狀態,表明全部的分片包括備份均可用

2 黃色,基本的分片可用,可是備份不可用(也多是沒有備份)

3 紅色,部分的分片可用,代表分片有一部分損壞。此時執行查詢部分數據仍然能夠查到,遇到這種狀況,仍是趕快解決比較好。

上面的結果還能夠看到,目前有一個節點,可是沒有分片,這是由於咱們的ES中尚未數據,一次也就沒有分片。

 

當使用elasticsearch做爲集羣名字時,會使用單播,查詢本機上是否還運行着其餘的節點。若是有,則組成一個集羣。

(若是使用其餘的名字做爲集羣名字,那麼就可能採用多播了!這個在工做中,常常會遇到,你們使用的是一個集羣名字,分片老是被搞在一塊兒,致使有人的機器下線後,本身的也沒法使用)

 

經過下面的命令,能夠查詢節點的列表:

curl 'localhost:9200/_cat/nodes?v'

獲得的結果以下:

curl 'localhost:9200/_cat/nodes?v'
host         ip        heap.percent ram.percent load node.role master name
mwubuntu1    127.0.1.1            8           4 0.00 d         *      New Goblin

查看全部的索引

在ES中索引有兩個意思:

1 動詞的索引,表示把數據存儲到ES中,提供搜索的過程;這期間可能正在執行一個建立搜索的過程。

2 名字的索引,它是ES中的一個存儲類型,與數據庫相似,內部包含type字段,type中包含各類文檔。

經過下面的命令能夠查看全部的索引:

curl 'localhost:9200/_cat/indices?v'

獲得的結果以下:

curl 'localhost:9200/_cat/indices?v'
health index pri rep docs.count docs.deleted store.size pri.store.size

因爲集羣中沒有任何的數據,上面的結果中也就只包含列的信息了。

建立索引

下面是建立索引,以及查詢索引的例子:

curl -XPUT 'localhost:9200/customer?pretty'
{
  "acknowledged" : true
}

curl 'localhost:9200/_cat/indices?v'
health index    pri rep docs.count docs.deleted store.size pri.store.size
yellow customer   5   1          0            0       495b           495b

上面的結果中,customer索引的狀態是yellow,這是由於此時雖然有5個主分片和一個備份。可是因爲只是單個節點,咱們的分片還在運行中,沒法動態的修改。所以當有其餘的節點加入到集羣中,備份的節點會被拷貝到另外一個節點中,狀態就會變成green。

索引和搜索文檔

以前說過,索引裏面還有類型的概念,在索引文檔以前要先設置類型type。

執行的命令以下:

curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
  "name": "John Doe"
}'

執行成功後會獲得以下的信息:

{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "created" : true
}

注意2.0版本的ES在同一索引下,不一樣的類型,相同的字段名字,是不容許字段類型不一致的。

上面的例子中,爲咱們建立了一個文檔,而且id自動設置爲1.

ES不須要再索引文檔前,不須要明確的建立索引,若是執行上面的命令,索引不存在,也會自動的建立索引。

執行下面的命令查詢,返回信息也以下:

curl -XGET 'localhost:9200/customer/external/1?pretty'
{
  "_index" : "customer",
  "_type" : "external",
  "_id" : "1",
  "_version" : 1,
  "found" : true, "_source" : { "name": "John Doe" }
}

這裏會新增兩個字段:

1 found 描述了請求信息

2 _source 爲以前索引時的數據

刪除索引

執行下面的命令就能夠刪除索引:

curl -XDELETE 'localhost:9200/customer?pretty'

返回結果:

{
    "acknowledged": true
}

總結

總結上面涉及到的命令大體以下:

curl -XPUT 'localhost:9200/customer'//建立索引
//插入數據 curl -XPUT 'localhost:9200/customer/external/1'-d ' { "name": "John Doe" }' curl 'localhost:9200/customer/external/1'//查詢數據 curl -XDELETE 'localhost:9200/customer'//刪除索引

參考

1【Elasticsearch官方文檔】:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

相關文章
相關標籤/搜索