ElasticSearch 文档基本操作
对于文档的操作,也是增删改查,重点在对文档的查询操作。
首先,回顾下,文档其实就是一段 JSON 格式的数据。
前提条件,我们需要先建立一个索引 blog,再向 blog 这个索引中的文档进行操作。
1.增加一个文档
响应结果中:
_version
表示文档的版本,每次更新文档这个数值会加一
_seq_no
和 _primary_term
这两个是版本控制用的,针对的是当前的 index
增加文档时不指定 id
添加文档时不指定 id。那么系统会自动给我们生成一个 id,
此时,只能使用 POST请求
使用PUT 会报错
使用 POST 结果如下:
2. 获取文档
使用 GET API 来获取文档
GET {index}/_doc/{doc id}
如下:
当我们获取的文档不存在时,会返回如下信息:
探测一个文档是否存在
使用 head 请求
head {index}/_doc/{id}
文档存在时,如下:
文档不存在时,如下:
批量获取文档
GET {index}/_mget
{
"ids":[想要获取的文档的id]
}
3. 文档更新
文档每更新一次,其 version 的值就会加一
使用 PUT 请求来更新文档
PUT {index}/_doc/{id}
{
//更新内容
}
这种方式是以覆盖的形式来更新,也就是新的文档内容会将原文档覆盖掉
如下:
- 首先查看 id 为 1 的文档的具体内容:
- 使用 PUT 请求来更新文档
- 查看更新之后的情况
仅仅只更新文档的某个字段
可以采用脚本内容,具体的格式如下:
POST {index}/_update/{id}
{
脚本内容
}
如下:
-
首先查看文档的具体内容
-
使用脚本来更新文档
lang 表示脚本语言,painless 是 es 内置的一种脚本语言。
source 表示具体执行的脚本,ctx 是一个上下文对象,通过 ctx 可以访问到_source
、_title
等。 -
查看更新的结果
向文档中增加字段:
为 id 为 1 的文档,增加了一个 content 字段。
查询更新
先找出符合条件的文档,再去更新这些文档。
- 先查看我们的所有文档如下
- 再将 "title"字段 包含 "title"的文档 的 content 修改为 888
- 查看修改结果
删除文档
根据 id 删除文档
DELETE {index}/_doc/{id}
如果在添加文档时指定了路由,那么删除文档时也需要指定路由,否则会报错
查询删除
查询删除是 POST 请求
也可以直接删除某一个索引下的所有文档: