欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Elasticsearch入门到落地】7、文档操作

【Elasticsearch入门到落地】7、文档操作

2025/2/10 22:19:09 来源:https://blog.csdn.net/u013517797/article/details/145531697  浏览:    关键词:【Elasticsearch入门到落地】7、文档操作

接上篇《6、索引库的操作》
上一篇我们学习了ElasticSearch的索引库的操作,以及mapping映射属性以及CRUD操作。本篇我们来学习文档的薪资、查询、删除和修改操作。

上一篇我们建立了索引库,库有了我们就可以往里面添加数据了,然后对文档进行CRUD操作。

一、新增文档

新增文档的DSL语法如下

POST /索引库名/_doc/文档id
{"字段1":"值1","字段2":"值2","字段3": {"子属性1":"值3","子属性2":"值4"},// ...
}

这段DSL语法用于向指定的ElasticSearch索引中添加一个具有特定ID(如果提供)的新文档,该文档包含多个字段,其中一个字段的值是一个嵌套的对象。
这段语法的含义:
1、POST /索引库名/_doc/文档id

●POST:这是一个HTTP请求方法,用于向服务器提交数据以创建/更新资源。在ElasticSearch中,POST通常用于添加或更新文档。
●/索引库名/:这里的“索引库名”应该替换为你想要添加文档的ElasticSearch索引的实际名称。索引是ElasticSearch中存储相关数据的地方,类似于关系型数据库中的表。
●_doc:这是ElasticSearch7.x及以后版本中用于指定文档类型的固定路径。在ElasticSearch6.x及更早版本中,你可能需要指定一个具体的类型(type),但在7.x及以后版本中,每个索引默认只有一个文档类型,即_doc。
●/文档id:这里的“文档id”是可选的。如果你提供了文档ID,ElasticSearch将尝试使用该ID更新已存在的文档(如果文档ID不存在,则创建新文档)。如果你不提供文档ID,ElasticSearch将自动生成一个唯一的ID。

2、{ ... }

大括号内的内容是一个JSON对象,它代表了你要添加到索引中的文档的数据。每个键值对代表文档的一个字段及其值。
●"字段1":"值1",
这表示文档中有一个名为“字段1”的字段,其值为“值1”。字段名可以是任何字符串,值可以是字符串、数字、布尔值、日期、数组或另一个嵌套的对象。
●"字段2":"值2",
类似于“字段1”,这是另一个字段及其值。

●"字段3": { ... }

这是一个嵌套的对象,表示“字段3”的值本身是一个包含多个子属性的对象。
"子属性1":"值3",
这是嵌套对象“字段3”中的第一个子属性,其名为“子属性1”,值为“值3”。
"子属性2":"值4"
这是嵌套对象“字段3”中的第二个子属性,其名为“子属性2”,值为“值4”。

我们下面编写一个示例,用上一章节我们新增的名为“heima”的索引库的数据结构,新增一个id为1的数据文档:

POST /heima/_doc/1
{"info":"内部高级JAVA讲师","email":"jackzhucoder@126.com","name":{"firstName":"三","lastName":"张"}
}

该语句新增了一个名为“张三”的高级JAVA讲师,我们在DevTools中新增的效果如下:

二、查询和删除文档

查询文档的DSL语法如下

GET /索引库名/_doc/文档id

示例:

GET /heima/_doc/1

效果:

删除文档的DSL语法如下

DELETE /索引库名/_doc/文档id

示例:

DELETE /heima/_doc/1

效果:

在查询id为1的文档,已经没有了:

三、修改文档

1、全量修改

全量修改会删除旧文档,添加新文档:

PUT /索引库名/_doc/文档id
{"字段1":"值1","字段2":"值2",// ...
}

这里与新增语法除了把POST改为PUT,其他没有变化。它做的操作就是去文档库找到id为1的文档,将其删除后,新增你PUT的这个新的id为1的文档。如果此时文档库中没有id为1的文档,系统直接执行一个新增操作,这和POST就无任何区别了,所以PUT操作是既能做修改,又能做新增。

我们执行一个PUT语句,将id为1的文档的名称由“张三”改为“李四”:

此时我们可以看到,返回的result为“updated”类型,且文档的版本version变为了2,说明该文档被修改过一次。
我们执行查询语句,可以看到文档被修改了:

2、局部修改

增量修改,修改指定字段值。语法如下:
POST /索引库名/_update/文档id

{"doc":{"字段名":"新的值",// ...}
}

这里用的是POST请求,其中的type类型为“_update”,里面是一个doc包裹的json串,内置的就是要修改的字段名和新值。
示例:

POST /heima/_update/1
{"doc":{"email":"hahaha@126.com"}
}

效果:

再次查询可以发现这个字段已经被修改,version版本也发生了改变:

四、总结

文档操作有哪些?
●创建文档:POST/索引库名/doc/文档id {json文档}
●查询文档:GET/索引库名/doc/文档id
●删除文档:DELETE/索引库名/doc/文档id
●修改文档:
全量修改:PUT/索引库名/doc/文档id {json文档}
增量修改:POST/索引库名/update/文档id {"doc":{字段}}

至此,关于ElasticSearch的文档操作学习完毕,从下一篇开始正式进入ES的demo案例的学习。

参考:《黑马Elasticsearch全套教程》
转载请注明出处:https://blog.csdn.net/acmman/article/details/145531697

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com