ES经过设置【节点的名字】和【集群的名字】,就能自动的组织相同集群名字的节点加入到集群中,并使不少的技术对用户透明化。html
若是用户想要管理查看集群的状态,能够经过一些REST API来实现。node
其余的ES文档翻译参考:Elasticsearch文档总结数据库
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