接上篇《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