exploring your cluster 探索你的集群
現在我們的節點(集群)已經啟動了,下一步需要做的就是和集群進行交流。幸運的是,elasticsearch提供了非常全面和強大的rest api,您可以使用與您的集群進行互動。可以使用api來完成的幾件事情如下:
讓我們從基本的集群健康檢查開始,通過這個檢查,我們可以觀察我們的集群是如何工作的(正在做什麼)。我們將使用 curl 這個工具來進行一系列操作。當然,你可以使用任何其它的支援 http/rest 呼叫的工具。假定我們依然在剛啟動的節點上工作,開啟乙個新的 shell .
要檢查集群健康狀態,需要使用 _cat api. 輸入:
curl 'localhost:9200/_cat/health?v'
可能的結果是:
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
從上述響應中,我們還可以發現,此時我們一共有乙個節點,0個分片,因為我們的集群中還未儲存資料。注意,因為我們使用集群的預設名稱 elasticsearch 並且,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
我們可以發現,我們的集群中只有乙個節點,名稱為"new goblin".
通過如下命令獲取集群中的索引列表:
curl 'localhost:9200/_cat/indices?v'
可能的響應結果:
health index pri rep docs.count docs.deleted store.size pri.store.size
這意味著我們的集群中還沒有索引。
例如如下響應,意味著我們的集群中有索引:
health index pri rep docs.count docs.deleted store.size pri.store.size
yellow logstash-2014.06.07 5 1 328907 0 305.5mb 305.5mb
yellow blogs 3 1 0 0 333b 333b
yellow kibana-int 5 1 1 0 8.1kb 8.1kb
yellow logstash-2011.05.18 5 1 2 0 10.3kb 10.3kb
yellow logstash-2013.12.11 5 1 1 0 8kb 8kb
yellow logstash-2014.05.29 5 1 4 0 13.7kb 13.7kb
yellow shakespeare 5 1 43880 0 7.8mb 7.8mb
yellow megacorp 5 1 4 0 12.9kb 12.9kb
yellow mega2orp 5 1 1 0 3.6kb 3.6kb
現在,讓我們建立乙個名為「customer」的索引,並重新列出所有的索引:curl -xput 'localhost:9200/customer?pretty'
curl 'localhost:9200/_cat/indices?v'
第一條命令,我們使用put 方法建立了乙個名稱為"customer"的索引,並且使用乙個pretty引數告訴集群讓它返回乙個格式美觀的json響應。
第一條命令的響應:
第二條命令的響應:
health index pri rep docs.count docs.deleted store.size pri.store.size
yellow customer 5 1 0 0 495b 495b
第二條命令的響應告訴我們,現在我們的集群中有乙個名為 "customer"的索引,該索引有5個原始分片,乙個副本。
你可能注意到了,此索引的health狀態標識為yellow,這說明這個索引的副本沒有被分配。因為我們目前只有乙個節點,為了保證高可用性,副本是不會被分配到和它原始分片相同的節點上的。等到有新的節點加入到集群中後,副本會再分配。那時再檢視索引狀態的話,yellow就會變為green.
現在,讓我們向customer索引中新增一些內容。回想之前提到過的,要想在索引中索引乙個文件,必須指明elasticsearch該文件的在索引中的型別 。讓我們索引乙個簡單的客戶文件到索引中。客戶文件索引型別為"external",並擁有乙個 id 1。
curl -xput 'localhost:9200/customer/external/1?pretty' -d '
'
響應如下:
從上述的響應中我們可以看出,乙個新的客戶文件已經被索引到了customer索引中,並且型別為external,擁有id 為 1.
需要注意的是,elasticsearch 並不用在索引乙個文件之前首先顯式的建立索引,在剛才的例子中,elasticsearch會自動的建立customer索引,如果它不存在的話。
現在,讓我們檢索一下我們剛剛索引的檔案:
curl -xget 'localhost:9200/customer/external/1?pretty'
響應結果:
curl -xget 'localhost:9200/customer/external/1?pretty'
}
我們發現,結果只是多了乙個 found 的域,我們索引的文件在 _source域裡面。
delete an index 刪除乙個索引
讓我們刪除剛才建立的索引,並檢視索引列表
curl -xdelete 'localhost:9200/customer?pretty'
curl 'localhost:9200/_cat/indices?v'
響應結果:
curl -xdelete 'localhost:9200/customer?pretty'
curl 'localhost:9200/_cat/indices?v'
health index pri rep docs.count docs.deleted store.size pri.store.size
這意味著我們已經成功刪除了剛才建立的索引。
curl -xput 'localhost:9200/customer'
curl -xput 'localhost:9200/customer/external/1' -d '
'curl 'localhost:9200/customer/external/1'
curl -xdelete 'localhost:9200/customer'
如果我們仔細研究了上面的命令,我們可以清楚地看到訪問elasticsearch資料的模式。該模式可以被概括如下:
curl -:///
這種模式在 elasticsearch rest api中是非常普遍的,記住它,對於你掌握其它命令非常有幫助。
開始學習Elasticsearch
集群名稱 cluster.name es cluster 5.3.1 節點名稱 node.name node 3 master資格 node.master true 儲存資料 node.data true 本機ip network.host 0.0.0.0 埠 節點之間的通訊 transport.t...
開始的開始
剛學習ios開發的時候,在網上看前輩們總結經驗,其中一條建議就是建立乙個自己的部落格,把自己學習過程中遇到的問題 解決方法和重要的知識點記錄下來,既可以增加印象也便於以後回顧複習。算算時間,自辭職開始自學ios也有三個月了,慚愧的是一直沒有建立自己的部落格,只是把知識點零零碎碎地記錄在印象筆記裡了。...
開始的開始
好像已經不能算是開始了 學程式設計也學了一年了,馬上已經到了開學第八周,期中的時候,越發覺得自己的程式設計能力致命的渣。開這個部落格主要是想要好好督促自己學習程式設計吧。大一的時候一入門學的就是c 當時學的挺吃力的 因為是計算機小白,啥也不懂 雖然現在也是 但是多多少少比當時厲害了些,現在開始學習資...