初识elasticsearch中的REST接口

前面向读者介绍了Elasticsearch的安装和基本配置,同时也向读者介绍了Elasticsearch中的核心概念,相信读者对Elasticsearch的使用已经有了一个初步的了解,接下来,向读者介绍Elasticsearch中的REST命令,这是Elasticsearch提供的一整套强大的REST命令,来实现对集群的操做。接下来向读者详细介绍这个东西。 node

本文是Elasticsearch系列的第二篇,阅读前面的文章,有助于更好的理解本文:json


1.elasticsearch安装与配置浏览器


REST接口

当节点和集群启动后,下一步就是要考虑如何与节点和集群进行通讯,幸运的是,Elasticsearch提供了一个很是全面和强大的REST API,开发者利用这个REST API,能够实现与集群之间的交互。这一套REST API主要提供了以下几个功能:app

  • 检查集群、节点和索引的健康信息、状态以及各类统计信息
  • 管理集群、节点、索引数据以及元数据
  • 对索引进行 CRUD(建立、读取、更新和删除)和搜索操做
  • 执行高级的搜索操做, 例如分页、排序、过滤、脚本编写(scripting)、聚合(aggregations)以及其它操做

上面向读者介绍了Elasticsearch提供的REST API所具备的基本功能,接下来,咱们就来看看这些基本功能具体如何操做。curl

集群操做

因为是REST API,读者可使用POST MAN,RESTClient等工具完成下面的测试,也能够直接使用curl命令来完成下面的测试。对于一些简单的如GET请求,也能够直接在浏览器中完成测试。

集群健康信息

使用以下命令能够查看集群健康信息:elasticsearch

curl -X GET "localhost:9200/_cat/health?v"

查看结果以下: 工具

图片描述

从这个响应中,咱们能够看到集群的名称,状态,节点数,分片数等等,其中:学习

  1. 状态有green、yellow和red三种,green表示目前集群运行一切OK,集群功能齐全;yellow表示集群全部数据都是可用的,集群功能也齐全,不过某些复制没有被分配;red则表示集群的部分数据不可用,集群的功能也是不全的,可是集群仍是能够运行的,它能够继续处理搜索请求,不过开发者要尽快修复它。
  2. 另外从响应结果中,咱们能够看到一共有一个节点,一个分片等信息。
  3. 由于我以前已经安装了Kibana,因此这里的信息实际上反应了Kibana的部分信息,读者若是没有安装Kibana,这里的响应结果和个人可能有差别,不过参数含义都是一致的,关于Kibana,咱们在后文会向读者介绍。

经过以下请求能够查看节点的详细信息:测试

curl -X GET "localhost:9200/_cat/nodes?v"

请求结果以下: url

图片描述

能够看到,咱们的节点名为iFO7DC9

查看全部索引

经过以下命令能够查看全部索引:

curl -X GET "localhost:9200/_cat/indices?v"

请求结果以下:

图片描述

从图中能够看到集群中索引的信息。

建立一个索引

接下来,经过以下命令,咱们能够建立一个名为customer的索引,并从新列出全部索引:

curl -X PUT "localhost:9200/customer?pretty"
curl -X GET "localhost:9200/_cat/indices?v"

执行结果以下:

图片描述

请求命令解释:

  1. 第一个,经过一个PUT请求,添加了一个名为customer的索引,末尾加上pretty参数,表示请求响应的JSON格式化以后打印出来,方便开发者阅读。这是一个通用的参数,当须要格式化响应JSON时,均可以使用这个参数。
  2. 第二个请求表示查看全部的索引,其中就有咱们刚刚建立的索引customer,该索引有5个分片1个复制,没有文档,可是注意该索引的status为yellow,根据前文的介绍,黄色表示某些复制没有被分配。这是由于elasticsearch默认为索引建立一份复制,而如今只有一个节点在运行,所以复制就分配不了了,当另一个节点加入到这个集群后才能分配,分配成功后,这个节点的健康状态就会变成绿色。

查询文档

经过以下请求能够添加一个文档:

curl -X PUT "localhost:9200/customer/_doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}'

这个请求表示在customer中的_doc类型中添加一个文档,文档id为1,该命令执行结果以下:

图片描述

小贴士:

Elasticsearch中,并不强制要求显式的建立索引,即前面案例中,若是开发者在添加文档以前,尚未建立customer索引,那么该文档同样也会建立成功的(此时索引会被自动建立)。

经过以下命令能够获取一个文档,最后面的1表示获取id为1的文档:

curl -X GET "localhost:9200/customer/_doc/1?pretty"

图片描述

删除索引

经过以下命令能够删除一个索引:

curl -X DELETE "localhost:9200/customer?pretty"
curl -X GET "localhost:9200/_cat/indices?v"

DELETE请求能够用来删除一个索引,该命令执行结果以下:

图片描述

能够看到,customer索引已经被成功删除了。

小结

这里向读者介绍的索引操做都是很常规,很简单的操做,后面会向读者介绍复杂的索引操做。
另外,读者总结上面的REST API格式,能够发现,API格式为:

curl -X <HTTP Verb> /<Index>/<Type>/<ID>

事实上,这个格式适用于全部的API,若是能记住它,对咱们后面的学习会有很大的帮助。

好了,本文就先介绍到这里,有问题欢迎留言讨论。

图片描述

相关文章
相关标签/搜索