初识elasticsearch中的REST接口

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

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


1.elasticsearch安装与配置


REST接口

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

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

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

集群操作

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

集群健康信息

使用如下命令可以查看集群健康信息:

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"

请求结果如下:

可以看到,我们的节点名为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,如果能记住它,对我们后面的学习会有很大的帮助。

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

原文发布于微信公众号 - 牧码小子(gh_d1ca11234a30)

原文发表时间:2018-10-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 16.04上使用PostgreSQL和Django应用程序

Django是一个用于快速创建Python应用程序的灵活框架。默认情况下,Django应用程序配置为将数据存储到轻量级SQLite数据库文件中。虽然这在某些负载...

790
来自专栏Brian

Linux DNS之nslookup命令

---- 概述 在我文章中有一篇专门讲解DNS如何工作的,今天我们采用linux下nslookup工具来查询DNS。nslookup全称是”query Inte...

4315
来自专栏云计算教程系列

如何在Ubuntu 14.04上将Symfony应用程序部署到生产环境中

Symfony是一个用PHP编写的开源Web框架,适用于构建任何规模的项目。它提供了一个基于可重用组件的精心设计的结构,您可以在其上构建自己的PHP应用程序。

2792
来自专栏Dato

Maven的作用是什么

现在我们开发的项目基本上都是maven项目,maven项目也是一个项目,类似于javaProject,javaWebProject,就是多了些功能。 那就说说究...

35411
来自专栏数据派THU

收藏 | Linux常用156个命令汇总!

来源:机器学习算法与Python学习 本文为大家带来Linux系统中156个常用的命令。 linux命令是对Linux系统进行管理的命令。对于Linux系统来说...

50912
来自专栏友弟技术工作室

DevOps人员常用的linux命令

以下内容是来自网路,中间加入了自己工作中的使用总结 命令 功能说明 线上查询及帮助命令 (2 个) man 查看命令帮助,命令的词典,更复杂...

3456
来自专栏云计算教程系列

如何在Debian 8上使用Postgres,Nginx和Gunicorn设置Django

Django是一个功能强大的Web框架,可以帮助您完成Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生...

1194
来自专栏Brian

Install Django Nginx uWSGI

概述 最近项目需要安装和配置多站点环境,所以把多站点开发环境配置和安装记录下来,帮助其他人少走坑。 安装Python 2.7.x 首先安装一些开发环境基本的包和...

3909
来自专栏Java编程技术

Dubbo剖析-集群容错

在进行系统设计时候,不仅要考虑正常逻辑该如何走,还要考虑异常逻辑。dubbo中当服务消费方调用服务提供方的服务出现错误时候,提供了多种容错方案,缺省为 fail...

1911
来自专栏世界第一语言是java

ELK+logback+kafka+nginx 搭建分布式日志分析平台

ELK(Elasticsearch , Logstash, Kibana)是一套开源的日志收集、存储和分析软件组合。而且不只是java能用,其他的开发语言也可以...

3552

扫码关注云+社区

领取腾讯云代金券