ES通過設定【節點的名字】和【叢集的名字】,就能自動的組織相同叢集名字的節點加入到叢集中,并使很多的技術對使用者透明化。
如果使用者想要管理檢視叢集的狀态,可以通過一些REST API來實作。
其他的ES文檔翻譯參考:Elasticsearch文檔總結
REST API用途
ES提供了很多全面的API,大緻可以分成如下幾種:
1 檢查叢集、節點、索引的健康情況
2 管理叢集、節點,索引資料、中繼資料
3 執行CRUD,建立、讀取、更新、删除 以及 查詢
4 執行進階的查詢操作,比如分頁、排序、腳本、聚合等
檢視叢集狀态
可以通過CURL指令發送REST指令,查詢叢集的健康狀态:
curl 'localhost:9200/_cat/health?v'
Localhost是主機的位址,9200是監聽的端口号,ES預設監聽的端口号就是9200.
這裡需要注意的是,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
作者:xingoo
出處:http://www.cnblogs.com/xing901022
本文版權歸作者和部落格園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接!