bash命令:curl -XGET 'localhost:9200/_cat/health?v&pretty'
kibana命令:GET /_cat/health?v
返回示例:
html
描述:能夠看到紅框範圍內的值爲 yellow,它表明了咱們 es 服務集羣的健康狀態,詳細描述以下。解讀後咱們能夠了解到,咱們的 yellow 狀態對於平常使用沒有影響,它只是由於咱們的集羣暫時由單節點服務器組成,沒有多餘的節點分配給咱們的分片副本了,解決示例會在之後的文章中給出。node
RED: Damnit. Some or all of (primary) shards are not ready.數據庫
YELLOW: Elasticsearch has allocated all of the primary shards, but some/all of the replicas have not been allocated.json
GREEN: Great. Your cluster is fully operational. Elasticsearch is able to allocate all shards and replicas to machines within the cluster.api
bash命令:curl -XGET 'localhost:9200/_cat /nodes?v?pretty'
kibana命令:GET /_cat/nodes?v
返回示例:
描述:注意最後的 name 即爲咱們某節點的惟一名稱bash
如下描述中
全部的 kibana 命令都具備<REST HttpVerb> /<Index>/<Type>/<ID> <?pretty>
格式
全部的 bash Curl 命令都具備curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'
格式,請結合實際語句進行區分。服務器
bash命令: curl -XPUT 'localhost:9200/customer?pretty&pretty'
kibana命令:PUT /customer?pretty
返回示例:app
{ "acknowledged": true, "shards_acknowledged": true }
bash命令:curl -XGET 'localhost:9200/_cat/indices?v&pretty'
kibana命令:GET /_cat/indices?v
返回示例:
描述: 該條指令用於獲取全部索引列表curl
bash命令:elasticsearch
curl -XPUT 'localhost:9200/customer/external/1?pretty&pretty' -H 'Content-Type: application/json' -d' { "name": "John Doe" } '
kibana命令:
PUT /customer/external/1?pretty { "name": "John Doe" }
返回示例:
{ "_index": "customer", "_type": "external", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "created": true }
描述:索引中能夠存在不一樣的類型,咱們剛剛便建立了類型 「external」及其文檔,你們能夠把它理解爲關係型數據庫中的表和列。索引時 ID 字段是可選的,假如咱們沒有指定,es 將自動爲咱們生成 ID(此種狀況下須要使用 POST HTTPVerb)。
bash命令:curl -XGET 'localhost:9200/customer/external/1?pretty&pretty'
kibana命令:GET /customer/external/1?pretty
返回示例:
{ "_index": "customer", "_type": "external", "_id": "1", "_version": 1, "found": true, "_source": { "name": "John Doe" } }
描述: 簡單查詢格式通常爲 /index/type/id
bash命令:curl -XDELETE 'localhost:9200/customer?pretty&pretty'
kibana命令:DELETE /customer?pretty
返回示例:
{ "acknowledged": true }
描述: 經過添加 * 通配符,咱們能夠刪除全部形如 customer2017-3-8-11-26-58的索引。
bash命令:
curl -XPOST 'localhost:9200/customer/external/1/_update?pretty&pretty' -H 'Content-Type: application/json' -d' { "doc": { "name": "Jane Doe", "age": 20 } } '
kibana命令:
POST /customer/external/1/_update?pretty { "doc": { "name": "Jane Doe", "age": 20 } }
返回示例:
{ "_index": "customer", "_type": "external", "_id": "1", "_version": 7, //修改次數 "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 } }
描述: 咱們剛纔針對以前錄入的 customer 的某條 id 爲 1 的數據進行了更新,並擴充了其屬性。值得注意的是,當咱們執行更新操做時,es 其實是對索引的文檔進行了刪除並重建的操做,並非真正意義上的更新。
bash命令: curl -XDELETE 'localhost:9200/customer/ external/2?pretty?pretty'
kibana命令:DELETE /customer/external/2?pretty
返回示例:
{ "found": true, "_index": "customer", "_type": "external", "_id": "1", "_version": 8, "result": "deleted", "_shards": { "total": 2, "successful": 1, "failed": 0 } }
bash命令: curl -XGET 'localhost:9200/customer/ external/_search?pretty'
kibana命令:GET /customer/external/_search?pretty
返回示例:
{ "took": 18, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 2, "max_score": 1, "hits": [ { "_index": "customer", "_type": "external", "_id": "AVqm6MRTU67sF7xAeJ5R", "_score": 1, "_source": { "name": "John Doe" } }, { "_index": "customer", "_type": "external", "_id": "AVqm6MURU67sF7xAeJ5S", "_score": 1, "_source": { "name": "Jane Doe" } } ] } }
描述: 剛纔演示的都是根據 ID 獲取單條數據,可是若是 ID 是自動生成值,這樣的方式就不十分友好了,因此 es 提供了 _search 關鍵字來進行對索引類型中全部資源的獲取操做,默認獲取前十條匹配信息。其實有心的讀者應該也注意到剛纔咱們在進行 update 操做時,指令中也有 _update 關鍵字,而在 kibana 的控制檯中,咱們還能經過它的智能提示獲取更多這樣的簡便操做指令。如 _count,_create等。後續也將介紹使用匹配規則來查找特定的文檔。
bash命令: curl -XGET 'localhost:9200/customer/external/_search?q=name:Jane'
kibana命令:GET /customer/external/_search?q=name:Jane Doe?pretty
返回示例: 暫略
描述: 字符串查詢便是一種條件查詢,q=name:Jane 即意味着咱們想要查詢 external 類型中屬性 name 值含有 Jane 的文檔,es 會自動將相關匹配返回給咱們。假如想要了解更多,請參見 Simple Query String Query。
bash命令:
curl -XGET 'localhost:9200/customer/external/_search?pretty' -H 'Content-Type: application/json' -d' { "query": { "match" : { "name":"Jane" } } } '
kibana命令:
GET /customer/external/_search?pretty { "query": { "match" : { "name":"Joe" } } }
返回示例: 暫略
描述: DSL 被稱爲特定領域語言,如 T-SQL 就是一種 DSL。它提供了更豐富更強大的方法供給開發者使用,如以上代碼和以前的字符串查詢的含義即是相同,更多用法詳見 Query-DSL。
bash命令:
curl -XPOST 'localhost:9200/customer/external/_bulk?pretty&pretty' -H 'Content-Type: application/json' -d' {"index":{"_id":"AVqm6MRTU67sF7xAeJ5R"}} {"name": "John Doe" } {"index":{"_id":"AVqm6MURU67sF7xAeJ5S"}} {"name": "Jane Doe" } {"update":{"_id":"AVqm6MRTU67sF7xAeJ5R"}} {"doc": { "name": "John Doe becomes Jane Doe" } } {"delete":{"_id":"AVqm6MURU67sF7xAeJ5S"}} '
kibana命令:
POST /customer/external/_bulk?pretty {"index":{"_id":"AVqm6MRTU67sF7xAeJ5R"}} {"name": "John Doe" } {"index":{"_id":"AVqm6MURU67sF7xAeJ5S"}} {"name": "Jane Doe" } {"update":{"_id":"AVqm6MRTU67sF7xAeJ5R"}} {"doc": { "name": "John Doe becomes Jane Doe" } } {"delete":{"_id":"AVqm6MURU67sF7xAeJ5S"}}
返回示例:
{ "took": 30, "errors": false, "items": [ { "index": {//ignore}, "created": false, "status": 200 } }, { "index": {//ignore}, "created": true, "status": 201 } }, { "update": {//ignore}, "status": 200 } }, { "delete": {//ignore}, "status": 200 } } ] }
描述: 不要被這麼「多」的命令嚇到了,其實咱們仔細看下來,就會發現筆者只是讓 es 執行了添加 id 爲 xx 和 yy 的文檔,而後再更新 id 爲 xx 的文檔內容,最後刪除了 id 爲 yy 的文檔。一步到位,順序執行,更不會由於中間某步出了錯誤便中止運行,因此有關於這個特性,但願你們在執行命令的時候要特別注意。
經過上文的描述,咱們已經初步瞭解了 es 中對於文檔,類型和索引的相關操做,可是要注意,咱們的努力仍然是十分粗糙的。更多的詳細操做,你們能夠參考官網的 api 文檔,裏面提到了本文省略的聚合,過濾條件查詢和批量刪除等十分有效的 api。
筆者之因此沒提出省略的部分,只是由於這樣編寫文章的工程量將會比較繁重,並且考慮到開發者平時更多地會使用客戶端進行遠程操做,精通開發平臺內專業工具的使用就已經足夠應付大多數的需求了。