(38)ElasticSearch更新文档对并发问题的处理

  重新获取文档数据和版本信息进行更新操作

POST /lib/user/4/_update?retry_on_conflict=3&version=5

  使用post进行文档的更新,当出现并发问题时内部使用的是乐观锁,版本控制version。

  使用retry_on_conflict参数,如果当前线程更新文档失败了,会重新获取文档的数据和当前文档最新的版本,再去进行更新,如果失败了再重复这个过程,重复几次有设定的值决定,上面的例子会重复执行3次

原文地址:https://www.cnblogs.com/javasl/p/12643971.html

时间: 2024-12-17 22:28:28

(38)ElasticSearch更新文档对并发问题的处理的相关文章

Elasticsearch学习笔记-04.1更新文档

除了创建和替换文档,我们也可以更新文档.需要注意的是Elasticsearch在底层并不会整的更新文档.当我们执行更新操作的时候,Elasticsearch会一次性完成先删除,再新建一个文档.下面的例子示意了如何将我们之前索引的ID为1的文档的name字段修改为"Jane Doe": POST /customer/external/1/_update?pretty { "doc": { "name": "Jane Doe" }

Elasticsearch 管理文档

ES支持近实时的索引.更新.查询.删除文档,近实时就意味着刚刚索引的数据需要1秒钟后才能搜索到,这也是与传统的SQL数据库不同的地方. 更多的ES文档资料参考:Elasticsearch官方文档翻译 索引/替换文档 之前已经试过如何索引一个文档了,这里再复习一下: curl -XPUT 'localhost:9200/customer/external/1?pretty' -d ' { "name": "John Doe" }' 上面的例子中,创建了一个索引为cus

elasticsearch 路由文档到分片

路由文档到分片 当你索引一个文档,它被存储在单独一个主分片上.Elasticsearch是如何知道文档属于哪个分片的呢?当你创建一个新文档,它是如何知道是应该存储在分片1还是分片2上的呢? 进程不能是随机的,因为我们将来要检索文档.事实上,它根据一个简单的算法决定: shard = hash(routing) % number_of_primary_shards routing值是一个任意字符串,它默认是_id但也可以自定义.这个routing字符串通过哈希函数生成一个数字,然后除以主切片的数量

[Elasticsearch] 分布式文档存储

本文翻译自Elasticsearch官方指南的distributed document store一章. 分布式文档存储 在上一章中,我们一直在介绍索引数据和获取数据的方法.但是我们省略了很多关于数据是如何在集群中被分布(Distributed)和获取(Fetched)的技术细节.这实际上是有意为之 - 你真的不需要了解数据在ES中是如何被分布的.它能工作就足够了. 在本章中,我们将会深入到这些内部技术细节中,来帮助你了解你的数据是如何被存储在一个分布式系统中的. 路由一份文档(Document

007-elasticsearch【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念

一.概述 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目标是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API. 然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎. 它可以被下面这样准确的形容: 一个分布式的实时文档存储

Elasticsearch分布式文档存储(四)

1.将文档路由到分片 索引文档时,它存储在单个主分片上. Elasticsearch如何知道文档属于哪个分片?当我们创建一个新文档时,它是如何知道它是否应该将该文档存储在分片1或分片2上? 该过程不能是随机的,因为我们将来可能需要检索文档.事实上,它由一个简单的公式决定: shard = hash(routing)%number_of_primary_shards 该routing值是一个任意字符串,默认为文档 _id,但也可以设置为自定义值. 此routing字符串通过散列函数传递以生成一个数

ElasticSearch部署文档(Ubuntu 14.04)

ElasticSearch部署文档(Ubuntu 14.04) 参考链接 https://www.elastic.co/guide/en/elasticsearch/guide/current/heap-sizing.html https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html#setup-configuration https://www.elastic.co/guid

MongoDB更新文档

说明:来看一下关系型数据库的update语句 UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某 其中where子句就类似查询文本,定位要更改的子表,set子句类似于修改器,更新哪些内容. 1.1文档替换 就是用一个新的文档完全替换匹配的文档.用于进行大规模模式数据的迁移. 例如: 如果要将friends和enemies两个字段迁移到relationships子文档中.可以进行如下操作 step1: var joe=db.users.findOne({"name"

【Mongodb教程 第八课 】MongoDB 更新文档

MongoDB的 update() 和 save() 方法用于更新文档的集合. update()方法更新现有的文档值,而替换现有的文档通过的文件中 save() 方法. MongoDB Update() 方法 update()方法更新现有文档值. 语法: update() 方法的基本语法如下 >db.COLLECTION_NAME.update(SELECTIOIN_CRITERIA, UPDATED_DATA) 例子 考虑以下数据mycol集合. { "_id" : Objec