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

相关文章
相关标签/搜索