写点什么

Elasticsearch document 的 _source 元数据

用户头像
escray
关注
发布于: 2021 年 01 月 22 日
Elasticsearch document 的 _source 元数据

文字内容整理自 B 站中华石杉的 Elasticsearch 顶尖高手系列课程核心知识篇

_source 元数据



put /test_index/test_type/1{  "test_field1": "test field1",  "test_field2": "test field2"}
{ "_index" : "test_index", "_type" : "test_type", "_id" : "16", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 4, "_primary_term" : 1}
get /test_index/test_type/1
{ "_index" : "test_index", "_type" : "test_type", "_id" : "16", "_version" : 1, "_seq_no" : 4, "_primary_term" : 1, "found" : true, "_source" : { "test_field1" : "test field1", "test_field2" : "test field2" }}
复制代码


_source 元数据:就是说,我们在创建一个 document 的时候,使用的那个放在 request body 中的 json 串,默认情况下,在 get 的时候,会原封不动的给我们返回回来。

定制返回结果


定制返回的结果,指定_source 中,返回哪些 field


GET test_index/test_type/16?_source=test_field1
{ "_index" : "test_index", "_type" : "test_type", "_id" : "16", "_version" : 1, "_seq_no" : 4, "_primary_term" : 1, "found" : true, "_source" : { "test_field1" : "test field1" }}
复制代码


document 的全量替换


语法与创建文档是一样的,如果 document id 不存在,那么就是创建;如果 document id 已经存在,那么就是全量替换操作,替换 document 的 json 串内容


document 是不可变的,如果要修改 document 的内容,第一种方式就是全量替换,直接对 document 重新建立索引,替换里面所有的内容


es 会将老的 document 标记为 deleted,然后新增我们给定的一个 document,当我们创建越来越多的 document 的时候,es 会在适当的时机在后台自动删除标记为 deleted 的 document

document 的强制创建


创建文档与全量替换的语法是一样的,有时我们只是想新建文档,不想替换文档,如果强制进行创建呢?


PUT /index/type/id?op_type=createPUT /index/type/id/_create
复制代码


document 的删除


DELETE /index/type/id
复制代码


不会理解物理删除,只会将其标记为 deleted,当 Elasticsearch 中数据越来越多的时候,Elasticsearch 会自动在后台将标记为 deleted 的 document 自动删除(物理),以释放空间。


我有一点好奇,就是已经被标记为 deleted 的 document 是否还能够被访问,甚至恢复?


发布于: 2021 年 01 月 22 日阅读数: 26
用户头像

escray

关注

Let's Go 2017.11.19 加入

在学 Elasticsearch 的项目经理

评论

发布
暂无评论
Elasticsearch document 的 _source 元数据