第三章-简单的API

关注公众号:CoderBuff,回复“es”获取《ElasticSearch6.x实战教程》完整版PDF。

万丈高楼平地起

ES提供了多种操作数据的方式,其中较为常见的方式就是RESTful风格的API。

简单的体验

利用Postman发起HTTP请求(当然也可以在命令行中使用curl命令)。

索引Index

创建索引

创建一个名叫demo的索引:

PUT http://localhost:9200/demo

ES响应:

{
"acknowledged": true,
"shards_acknowledged": true,
"index": "demo"
}

在创建索引时,可指定主分片和分片副本的数量:

PUT http://localhost:9200/demo

{
"settings":{
"number_of_shards":1,
"number_of_replicas":1
}
}

ES响应:

{
"acknowledged": true,
"shards_acknowledged": true,
"index": "demo"
}

查看指定索引

GET http://localhost:9200/demo

ES响应:

{
"demo": {
"aliases": {},
"mappings": {},
"settings": {
"index": {
"creation_date": "1561110747038",
"number_of_shards": "1",
"number_of_replicas": "1",
"uuid": "kjPqDUt6TMyywg1P7qgccw",
"version": {
"created": "5060499"
},
"provided_name": "demo"
}
}
}
}

查询ES中的索引

查询ES中索引情况:

GET http://localhost:9200/_cat/indices?v

ES响应:

health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open demo wqkto5CCTpWNdP3HGpLfxA 5 1 0 0 810b 810b
yellow open .kibana pwKW9hJyRkO7_pE0MNE05g 1 1 1 0 3.2kb 3.2kb

可以看到当前ES中一共有2个索引,一个是我们刚创建的demo,另一个是kibana创建的索引.kibana。表格中有一些信息代表了索引的一些状态。

health:健康状态,red表示不是所有的主分片都可用,即部分主分片可用。yellow表示主分片可用备分片不可用,常常是单机ES的健康状态,greens表示所有的主分片和备分片都可用。(官方对集群健康状态的说明,https://www.elastic.co/guide/en/elasticsearch/guide/master/cluster-health.html

status:索引状态,open表示打开可对索引中的文档数据进行读写,close表示关闭此时索引占用的内存会被释放,但是此时索引不可进行读写操作。

index:索引

uuid:索引标识

pri:索引的主分片数量

rep:索引的分片副本数量,1表示有一个分片副本(有多少主分片就有多少备分片,此处表示5个备分片)。

docs.count:文档数量

docs.deleted:被删除的文档数量

store.size:索引大小

pri.store.size:主分片占用的大小

删除索引

删除demo索引,删除索引等同于删库跑路,请谨慎操作。

DELETE http://localhost:9200/demo

ES响应:

{
"acknowledged": true
}

类型Type(同时定义映射Mapping字段及类型)

创建类型

在前面基本术语中我们提到类型Type类似关系型数据库中的表,映射Mapping定义表结构。创建类型Type时需要配合映射Mapping。

创建索引demo的类型为example_type,包含两个字段:created类型为date,message类型为keyword:

方式一:

PUT http://localhost:9200/demo/_mapping/example_type

{
"properties":{
"created":{
"type":"date"
},
"message":{
"type":"keyword"
}
}
}

此时再次执行查询索引的操作,已经可以发现类型Type被创建了,遗憾的是,如果类型Type(或者映射Mapping)一旦定义,就不能删除,只能修改,为了保证本教程顺利进行方式二创建类型,所以此处执行DELETE http://localhost:9200/demo删除索引。删除索引后不要再创建索引,下面的这种方式是在创建索引的同时创建Type并定义Mapping

方式二:

PUT http://localhost:9200/demo
{
"mappings":{
"example_type":{
"properties":{
"created":{
"type":"date"
},
"message":{
"type":"keyword"
}
}
}
}
}

此时执行GET http://localhost:9200/demo,可以看到我们在ES中创建了第一个索引以及创建的表结构,接下来插入就是数据(即文档)。

文档Document

插入文档

系统定义_id

POST http://localhost:9200/demo/example_type
{
"created":1561135459000,
"message":"test1"
}

ES响应:

{
"_index": "demo",
"_type": "example_type",
"_id": "AWt67Ql_Tf0FgxupYlBX",
"_version": 1,
"result": "created",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"created": true
}

查询文档

ElasticSearch的核心功能——搜索。

POST http://localhost:9200/demo/example_type/_search?pretty

ES响应:

{
"took": 183,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1,
"hits": [
{
"_index": "demo",
"_type": "example_type",
"_id": "AWt67Ql_Tf0FgxupYlBX",
"_score": 1,
"_source": {
"created": 1561135459000,
"message": "test1"
}
}
]
}
}

关于文档的查询是ElasticSearch的核心,后面的章节会详细介绍一些基本的简单查询和更为高级的复杂查询,此处仅作为对插入数据的验证,不做过多展开。

修改文档

根据文档_id修改

POST http://localhost:9200/demo/example_type/AWt67Ql_Tf0FgxupYlBX/_update
{
"doc":{
"message":"updated"
}
}

ES响应:

{
"_index": "demo",
"_type": "example_type",
"_id": "AWt67Ql_Tf0FgxupYlBX",
"_version": 2,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}

删除文档

删除_id为AWt67Ql_Tf0FgxupYlBX的文档

DELETE http://localhost:9200/demo/example_type/AWt67Ql_Tf0FgxupYlBX

ES的响应:

{
"found": true,
"_index": "demo",
"_type": "example_type",
"_id": "AWt67Ql_Tf0FgxupYlBX",
"_version": 2,
"result": "deleted",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
}
}

关注公众号:CoderBuff,回复“es”获取《ElasticSearch6.x实战教程》完整版PDF。

这是一个能给程序员加buff的公众号 (CoderBuff)

《ElasticSearch6.x实战教程》之简单的API的更多相关文章

  1. 《ElasticSearch6.x实战教程》之简单搜索、Java客户端(上)

    第五章-简单搜索 众里寻他千百度 搜索是ES的核心,本节讲解一些基本的简单的搜索. 掌握ES搜索查询的RESTful的API犹如掌握关系型数据库的SQL语句,尽管Java客户端API为我们不需要我们去 ...

  2. 《ElasticSearch6.x实战教程》正式推出(附图书抽奖)

    经过接近1个月的时间,ElasticSearch6.x实战教程终于成册.这本实战教程小册有很多不足(甚至可能有错误),也是第一次完整推出一个系列的教程. 1年前,我开始真正接触ES,在此之前仅停留在知 ...

  3. 《ElasticSearch6.x实战教程》之分词

    第四章-分词 下雨天留客天留我不留 本打算先介绍"简单搜索",对ES的搜索有一个直观的感受.但在写的过程中发现分词无论如何都绕不过去.term查询,match查询都与分词息息相关, ...

  4. 《ElasticSearch6.x实战教程》之复杂搜索、Java客户端(下)

    第八章-复杂搜索 黑夜给了我黑色的眼睛,我却用它寻找光明. 经过了解简单的API和简单搜索,已经基本上能应付大部分的使用场景.可是非关系型数据库数据的文档数据往往又多又杂,各种各样冗余的字段,组成了一 ...

  5. 《ElasticSearch6.x实战教程》之父-子关系文档

    第七章-父-子关系文档 打虎亲兄弟,上阵父子兵. 本章作为复杂搜索的铺垫,介绍父子文档是为了更好的介绍复杂场景下的ES操作. 在非关系型数据库数据库中,我们常常会有表与表的关联查询.例如学生表和成绩表 ...

  6. 《ElasticSearch6.x实战教程》之准备工作、基本术语

    第一章-准备工作 工欲善其事必先利其器 ElasticSearch安装 ElasticSearch6.3.2下载地址(Linux.mac OS.Windows通用,下载zip包即可):https:// ...

  7. 《ElasticSearch6.x实战教程》之实战ELK日志分析系统、多数据源同步

    第十章-实战:ELK日志分析系统 ElasticSearch.Logstash.Kibana简称ELK系统,主要用于日志的收集与分析. 一个完整的大型分布式系统,会有很多与业务不相关的系统,其中日志系 ...

  8. BI之SSAS完整实战教程4 -- 部署至SSAS进行简单分析

    上一篇已经创建了多维数据集的结构. 接下来我们将多维数据集的架构定义发送到Analysis Services实例,部署到AS上去. 文章提纲 部署和浏览多维数据集 SSMS使用简介 总结 一.部署和浏 ...

  9. 【转】mybatis实战教程(mybatis in action),mybatis入门到精通

    MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis ...

随机推荐

  1. 关于VS编译DevExpress默认产生几个多余的语言包的问题解决

    原文 关于VS编译DevExpress默认产生几个多余的语言包的问题解决 VS15开始对于非系统的Dll都会默认复制到本地,即bin\debug下面,复制dll到本地好处在于发布的时候不用再去寻找相关 ...

  2. Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)

    一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32 ...

  3. hMailServer搭建简单邮件系统

    本文介绍的是搭建本地的邮件系统,至于互联网的还在研究之中. 1.需要一个邮件服务器软件,这里用的是hMailServer,其中会让你设置一个密码,记住这个密码,后面连接的时候回用到. 2.添加域名 因 ...

  4. 浅谈网络I/O多路复用模型 select & poll & epoll

    http://blog.csdn.net/nk_test/article/details/50662946

  5. BoxedApp Packer 将您的原始应用“打包”成单个完全的可执行二进制文件

    及时应对移动化趋势 在没有安装到本地硬盘驱动的情况下,使用闪存卡.网络文件夹或者可移动磁盘远程启动应用程序通常是一件令人头疼的事,你会发现,应用程序会突然会丢失文件.路径错误或者远程注册表故障等一系列 ...

  6. 让VC2012生成的程序支持XP系统(修改mkspecs\win32-msvc2012\qmake.conf,QT的DLL都是支持XP的,只与EXE有关)good

    如果用的编译器是VC2012以上,那么默认生成出的程序是不能运行在XP系统上的.所以需要修改链接参数 我们要做的是修改qmake.conf文件中的参数,文件路径根据开发环境不同而不同下面以5.1.1 ...

  7. libevent for qt的讨论

    一直对Qt官方的QtNetwork模块抱有遗憾,Qt自带的网络模块用的是select模型,无法支持高并发的服务器开发.最近在网上看到有个libevent for qt的东西,它直接替换了Qt的sele ...

  8. linux下mysql定时备份

    1. 在服务器上建立备份文件的存放文件夹 sudo mkdir /usr/local/dbbackup 2. 编写备份脚本 vi dbbackup.sh 在里面编写如下内容 mysqldump -ur ...

  9. 使用VS2010开发Qt程序的4点经验(QT4到QT5的升级,更改sln文件,切换工程使用的Qt库,在VS的Solution Explorer视图中建立文件夹)

    导读 相比于Qt Creator,我更喜欢用VS2010来进行开发.虽然启动时间相对较慢,但是VS下强大的快捷键和丰富的插件,以及使用多年的经验,都让我觉得在开发过程中得心应手.其中最重要的一点是,有 ...

  10. 浅谈js闭包(closure)

    相信很多从事js开发的朋友都或多或少了解一些有关js闭包(closure)的知识. 本篇文章是从小编个人角度,简单地介绍一下有关js闭包(closure)的相关知识.目的是帮助一些对js开发经验不是很 ...