为了账号安全,请及时绑定邮箱和手机立即绑定

ElasticSearch入门 官方文档翻译 - 2.Exploring Your Cluster

标签:
大数据

集群探索

REST API

现在,我们的节点(集群)已经跑起来了,下一步想着怎么跟它沟通。幸运的是,ES提供了广泛且强大的REST API用于与集群交互。下面是利用这个API,可以做的几件事情:

  • 检查你的集群、节点和索引的健康状态和各种统计信息

  • 管理你的集群、节点、索引数据和元数据

  • 对你的索引进行CRUD(创建、读取、更新和删除)和搜索操作

  • 执行高级的查询操作,像是分页、排序、过滤、脚本编写(scripting)、聚合(aggregations)和许多其它操作

集群健康

让我们从一个基础的健康检查开始,查看我们的集群是怎么工作的。我们使用CURL来干这事,当然,你也可以用其他可以发起HTTP/REST请求的工具。首先,假设我们在启动ES的同一个节点上,然后打开另一个SHELL窗口。

我们用_cat API来作集群健康检查。

curl -XGET 'localhost:9200/_cat/health?v&pretty'

响应为:

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1475247709 17:01:49  elasticsearch green           1         1      0   0    0    0        0             0                  -                100.0%

可以看到,我们名称为elasticsearch的集群是启动的,绿色状态。

当我们询问集群状态的时候,我们要么得到绿色、黄色或红色。绿色代表一切正常(集群功能齐全),黄色意味着所有的数据都是可用的,但是某些复制没有被分配(集群功能齐全),红色则代表因为某些原因,某些数据不可用。注意,即使是集群状态是红色的,集群仍然是部分可用的(它仍然会利用可用的分片来响应搜索请求),但是可能你需要尽快修复它,因为你有丢失的数据。

也是从上面的响应中,我们可以看到,一共有一个节点,由于里面没有数据,我们有0个分片。注意,由于我们使用默认的集群名字(elasticsearch),并且由于ES默认使用网络单播发现同台机器上的其它节点,如果你在你的网络中启动了多个节点,你就已经把她们加入到一个集群中了。在这种情形下,你可能在上面的响应中看到多个节点。

用以下命令可以获取集群中的节点列表:

curl -XGET 'localhost:9200/_cat/nodes?v&pretty'

响应为:

ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name127.0.0.1           10           5   5    4.46                        mdi      *      PB2SGZY

可以看到,名为PB2SGZY的节点,是集群中唯一的一个节点。

查看所有的索引

让我们看看现在有什么索引:

curl -XGET 'localhost:9200/_cat/indices?v&pretty'

响应是:

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

这代表集群中目前还没有索引。

创建索引

现在,我们创建一个名为customer的索引,然后再次获取所有的索引:

curl -XPUT 'localhost:9200/customer?pretty'curl -XGET 'localhost:9200/_cat/indices?v&pretty'

第一个命令使用PUT动词创建了名为customer的索引。我们简单地将pretty附加到调用的尾部,使其以美观的形式打印出JSON响应(如果有的话)。

响应如下:

health status index    uuid                   pri rep docs.count docs.deleted store.size pri.store.sizeyellow open   customer 95SQ4TSUT7mWBT7VNHH67A   5   1          0            0       260b           260b

第二个命令的结果告诉我们,我们现在有一个名为customer的索引,它有5个主分片和1个复制(默认),其中包括0个文档。

你也许发现了,customer索引的健康度被标记为黄色了。回想我们之前讨论的,黄色意味着某些复制没有(或者还未)被分配。这个索引之所以这样,是因为ES默认为这个索引创建一份复制。由于现在我们只有一个节点在运行,那一份复制就分配不了了(为了高可用),直到当另外一个节点加入到这个集群后,才能分配。一旦那份复制在第二个节点上被复制,这个节点的健康状态就会变成绿色。

索引并查询一个文档

现在让我们放一些东西到customer索引中。首先要知道的是,为了索引一个文档,我们必须告诉ES这个文档要到这个索引的哪个类型下。

让我们将一个简单的客户文档索引到customer索引,external类型中,这个文档的ID是1,操作如下:

curl -XPUT 'localhost:9200/customer/external/1?pretty&pretty' -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}
'

响应为:

{  "_index" : "customer",  "_type" : "external",  "_id" : "1",  "_version" : 1,  "result" : "created",  "_shards" : {    "total" : 2,    "successful" : 1,    "failed" : 0
  },  "created" : true}

从上面的响应中,我们可以看到,一个新的客户文档在customer索引和external类型中被成功创建。文档也有一个内部id 1, 这个id是我们在索引的时候指定的。

有一个关键点需要注意,ES在你想将文档索引到某个索引的时候,并不强制要求这个索引被显式地创建。在前面这个例子中,如果customer索引不存在,ES将会自动地创建这个索引。

现在,让我们把刚刚索引的文档取出来:

curl -XGET 'localhost:9200/customer/external/1?pretty&pretty'

响应为:

{  "_index" : "customer",  "_type" : "external",  "_id" : "1",  "_version" : 1,  "found" : true,  "_source" : { "name": "John Doe" }
}

除了一个叫做found的字段来指明我们找到了一个ID为1的文档,和另外一个字段_source返回我们前一步中索引的完整JSON文档之外,其它的都没有什么特别之处。

删除索引

现在,让我们删除刚才创建的索引,然后在列出所有的索引:

curl -XDELETE 'localhost:9200/customer?pretty&pretty'curl -XGET 'localhost:9200/_cat/indices?v&pretty'

响应为:

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size

这表明我们成功地删除了这个索引,现在我们回到了集群中空无所有的状态。

在更进一步之前,我们再细看一下一些我们学过的API命令:

curl -XPUT 'localhost:9200/customer?pretty'curl -XPUT 'localhost:9200/customer/external/1?pretty' -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}
'curl -XGET 'localhost:9200/customer/external/1?pretty'curl -XDELETE 'localhost:9200/customer?pretty'

如果我们仔细研究以上的命令,我们可以发现访问Elasticsearch中数据的一个模式。这个模式可以被总结为:

 curl -<REST Verb> <Node>:<Port>/<Index>/<Type><ID>

这个REST访问模式普遍适用于所有的API命令,如果你能记住它,你就会为掌握ES开一个好头。



作者:Jason__Ding
链接:https://www.jianshu.com/p/74b813600243


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消