elasticsearch 实战三部曲之二:文档操作
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
本文是《elasticsearch 实战三部曲》系列的第二篇,上一篇文章我们动手熟悉了索引相关的基本操作,现在一起来熟悉文档相关的操作;
环境信息
本次实战用到的 elasticsearch 版本是 6.5.4,安装在 Ubuntu 16.04.5 LTS,客户端工具是 postman6.6.1;
如果您需要搭建 elasticsearch 环境,请参考《Linux环境快速搭建elasticsearch6.5.4集群和Head插件》;
基本情况介绍
本次实战的 elasticsearch 环境以及搭建完毕,是由两个机器搭建的集群,并且 elasticsearch-head 也搭建完成:
一号机器,IP 地址:192.168.119.152;
二号机器:IP 地址:192.168.119.153;
elasticsearch-head 安装在一号机器,访问地址:http://192.168.119.152:9100
已经建立了索引 test001;
数据格式说明
为了便于和读者沟通,我们来约定一下如何在文章中表达请求和响应的信息:
假设通过 Postman 工具向服务器发送一个 PUT 类型的请求,地址是:http://192.168.119.152:9200/test001/article/1
请求的内容是 JSON 格式的,内容如下:
对于上面的请求,我在文章中就以如下格式描述:
读者您看到上述内容,就可以在 postman 中发起 PUT 请求,地址是"test001/article/1"前面加上您的服务器地址,内容是上面的 JSON;
新建文档
在索引 test001 下创建一个文档,类型是 article,id 为 1:
收到返回码 201,body 内容如下,可见 version 为 1:
查找文档
根据 id 查找刚刚创建的那一条文档:
收到返回码 200,body 内容如下,索引、类型、id、版本号等全部返回了:
如果查找的文档不存在,返回码为 400,返回内容如下:
检查文档是否存在
该请求的响应没有 body,只有返回码,存在时返回 200,不存在返回 404
根据 id 一次获取多个文档(_mget 命令)
一次查询三条记录,id 为 1 和 2 的记录真实存在,id 为 999 的记录不存在,请求报文如下:
返回内容如下所示,可见 id 为 999 的记录,found 字段为 false,表示不存在:
根据 id 一次获取多个文档(元字段_id)
除了使用_mget 命令,还可以通过_search 命令的方式,以元字段"_id"作为搜索条件,一次获取多个文档:
返回码 200 表示成功,body 是搜索结果:
更新文档(doc 方式)
对于 id 为 1 的文档,如果要更新其 title 字段,请求报文如下,根节点名为"doc",可以对指定字段进行替换:
更新成功后,返回码 200,返回 body:
更新文档(脚本方式)
还有一种更新文档的方式是提交一段 elasticsearch 支持的脚本,如下所示,**"lang":"painless"**表示脚本语言类型为 painless,params 的内容就是入参,inline 的值就是脚本的内容,表示将 star 字段的值增加 100:
执行成功的返回码 200,报文:
查询更新
前面介绍的更新都是指定 id 的,有的时候我们需要用其他字段查询并更新,例如查找 title 等于"abc"的记录,将其 content 字段更新为"123456":
收到返回码 200,body 内容如下:
删除文档(指定 ID)
删除成功返回码 200,body 如下:
删除文档(带查询条件)
如果想删除 title 字段等于"abc"的文档:
删除成功返回码 200,body 如下:
同样的操作再试一次,就会返回 404 错误,因为记录已经不存在了;
批量操作
要新增多个文档,可以将内容写入 json 文件,再通过批量操作的接口,将数据一次性 POST;
首先创建一个名为 book.json 的文件,内容如下:
如上所示,第一行指定了索引、类型、id 等基本信息,第二行就是该记录的各个字段的内容;
如果您的电脑可以使用 curl 命令,那么在 book.json 文件所在文件夹下面执行此命令即可提交:
如果您在使用 postman 软件,请按下图方式提交,请注意操作步骤遵循图中的 1 到 6 的顺序,url 地址是:_bulk?pretty
批量数据提交后,用 head 可见新增了一个索引,下面有 5 条记录,如下图:
至此,和文档有关的基本操作实战已经完成了,接下来的文章中,我们会进行搜索相关的实战;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/5a44e9b5e61c9a418a5194813】。文章转载请联系作者。
评论