ElasticSearch 文档基本操作

对于文档的操作,也是增删改查,重点在对文档的查询操作。
首先,回顾下,文档其实就是一段 JSON 格式的数据。

前提条件,我们需要先建立一个索引 blog,再向 blog 这个索引中的文档进行操作。

1.增加一个文档

01新建文档.png

响应结果中:
_version 表示文档的版本,每次更新文档这个数值会加一
_seq_no_primary_term 这两个是版本控制用的,针对的是当前的 index
02查看结果.png

增加文档时不指定 id

添加文档时不指定 id。那么系统会自动给我们生成一个 id,
此时,只能使用 POST请求
使用PUT 会报错
03put不行.png

使用 POST 结果如下:
04post.png

2. 获取文档

使用 GET API 来获取文档

GET {index}/_doc/{doc id}

如下:
05获取文档.png

当我们获取的文档不存在时,会返回如下信息:
06获取的文档不存在.png

探测一个文档是否存在

使用 head 请求

head {index}/_doc/{id}

文档存在时,如下:
07.png
文档不存在时,如下:
08文档不存在 head.png

批量获取文档

GET {index}/_mget
{
  "ids":[想要获取的文档的id]
}

09批量获取文档.png

3. 文档更新

文档每更新一次,其 version 的值就会加一

使用 PUT 请求来更新文档

PUT {index}/_doc/{id}
{
  //更新内容
}

这种方式是以覆盖的形式来更新,也就是新的文档内容会将原文档覆盖掉
如下:

  1. 首先查看 id 为 1 的文档的具体内容:
    10put 更新文档.png
  2. 使用 PUT 请求来更新文档
    11put更新.png
  3. 查看更新之后的情况
    12Put更新.png

仅仅只更新文档的某个字段

可以采用脚本内容,具体的格式如下:

POST {index}/_update/{id}
{
    脚本内容
}

如下:

  1. 首先查看文档的具体内容
    13 脚本更新-1.png

  2. 使用脚本来更新文档
    13 脚本更新-2.png
    lang 表示脚本语言,painless 是 es 内置的一种脚本语言。
    source 表示具体执行的脚本,ctx 是一个上下文对象,通过 ctx 可以访问到 _source_title 等。

  3. 查看更新的结果
    13 脚本更新-3.png

向文档中增加字段:

13-增加字段.png
为 id 为 1 的文档,增加了一个 content 字段。

查询更新

先找出符合条件的文档,再去更新这些文档。

  1. 先查看我们的所有文档如下
    14查询更新.png
  2. 再将 "title"字段 包含 "title"的文档 的 content 修改为 888
    14查询更新-2.png
  3. 查看修改结果
    14查询更新-3.png

删除文档

根据 id 删除文档

DELETE {index}/_doc/{id}

如果在添加文档时指定了路由,那么删除文档时也需要指定路由,否则会报错
15删除文档.png

查询删除

查询删除是 POST 请求
15删除文档-2.png

也可以直接删除某一个索引下的所有文档:
15删除文档-3.png

posted @ 2023-04-26 21:21  溯光6  阅读(51)  评论(0编辑  收藏  举报