Elasticsearch之更新(全部更新和局部更新)

简介:

首先,明确一个概念,es包括全部更新和局部更新

 

 

ES全部更新

  ES可以使用PUT或者POST对文档进行更新(全部更新),如果指定ID的文档已经存在,则执行更新操作。

比如,我这里,id=1文档存在,那么,就是es全部更新。

注意:

  es执行更新操作的时候,ES首先将旧的文档标记为删除状态,然后添加新的文档,旧的文档不会立即消失,但是你也无法访问,

ES会在你继续添加更多数据的时候在后台清理已经标记为删除状态的文档。

 

 

 

 

 

 

 

 

 

ES局部更新

  es为什么需要局部更新?

这个,从字面意思就知道,当然,不想全部更新时,比如一个指定类型下,很多个id,我不想每个id都涉及等。

 

 

  局部更新,可以添加新字段或者更新已有字段(必须使用POST

[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name&pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"_version" : 3,
"found" : true,
"_source" : {
"name" : "tom"
}
}
[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name,age&pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"_version" : 3,
"found" : true,
"_source" : {
"age" : 25,
"name" : "tom"
}
}
[hadoop@djt002 elasticsearch-2.4.3]$

 

 

 

 

 

[hadoop@djt002 elasticsearch-2.4.3]$ curl -XPOST 'http://192.168.80.200:9200/zhouls/emp/1/_update' -d '{"doc":{"name":"mack"}}'
{"_index":"zhouls","_type":"emp","_id":"1","_version":4,"_shards":{"total":2,"successful":1,"failed":0}}[hadoop@djt002 elasticsearch-2.4.3]$ 
[hadoop@djt002 elasticsearch-2.4.3]$ 
[hadoop@djt002 elasticsearch-2.4.3]$ 
[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?_source=name&pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"_version" : 4,
"found" : true,
"_source" : {
"name" : "mack"                成功更改了name
}
}
[hadoop@djt002 elasticsearch-2.4.3]$ curl -XGET 'http://192.168.80.200:9200/zhouls/emp/1?pretty'
{
"_index" : "zhouls",
"_type" : "emp",
"_id" : "1",
"_version" : 4,
"found" : true,
"_source" : {
"name" : "mack",
"age" : 25
}
}
[hadoop@djt002 elasticsearch-2.4.3]$

 

 

 

 

 

 

总结:

ES全部更新,使用PUT或者POST

ES局部更新,使用POST

 

 

ES的全部更新和局部更新,底层有什么区别?

答:全部更新,是直接把之前的老数据,标记为删除状态,然后,再添加一条更新的。

      局域更新,只是修改某个字段。


本文转自大数据躺过的坑博客园博客,原文链接:http://www.cnblogs.com/zlslch/p/6421577.html,如需转载请自行联系原作者

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
存储 缓存 自然语言处理
ES 8.0:历时三年的 Elasticsearch 8.x 大更新给我们带来了什么?
ES 8.0:历时三年的 Elasticsearch 8.x 大更新给我们带来了什么?
ES 8.0:历时三年的 Elasticsearch 8.x 大更新给我们带来了什么?
|
存储 架构师 索引
Elasticsearch 线上问题实战——如何借助 painless 更新时间?
老大,请教个问题。你用painless操作过@timestamp字段吗?比如我获取了当前timestamp后,想要减去5分钟, 这个怎么写?ctx._source['@timestamp'] 是get当前的timestamp,后面operator要怎么写?
Elasticsearch 线上问题实战——如何借助 painless 更新时间?
|
知识图谱
Elasticsearch深入详解-知识图谱(每周更新)
1、题记 Elasticsearch技术已经燃爆到飞的感觉。 为了方便订阅Elasticsearch深入详解的博友们第一时间获取最新经验分享,和大家一起成长,特将本专栏内容制作为Elasticsearch深入详解知识图谱。 并承诺【铭毅天下】微信公众号每周不定时推送ES深入研究文章至少一篇。
Elasticsearch深入详解-知识图谱(每周更新)
|
JSON API 数据格式
Elasticsearch Mget、GetDocSource、索引部分更新案例分享
1.前期准备 参考文档《高性能elasticsearch ORM开发库使用介绍》导入和配置es客户端bboss 2.mget操作 简单而直观的多文档获取案例    ClientInterface clientUtil = ElasticSearchHelper.
1216 0