Elasticsearch 批量操作冲突?试试这 2 种优化技巧

背景

使用 _update_by_query 批量更新或者 _delete_by_query 批量删除,刚好有个 _bulk 批量写入,并且 _bulk 的执行更快,导致批量更新或者批量删除的版本比写入的版本要低,造成版本冲突报错。

方案

以下提供两种方式避免版本冲突:一是使用 version=版本号&version_type=external 外部控制,二是 if_seq_noif_primary_term 参数控制。

基于 external 外部模式

将 version 的控制权交由客户端管理。

例如,更新 my_index 索引。

json 复制代码
PUT my_index/_doc/233?version=2&version_type=external

当给定的 version=2,大于当前版本 version=1,执行更新或索引操作成功。

使用 if_seq_noif_primary_term 参数控制

在更新索引之前先查询 if_seq_noif_primary_term 这两个参数,然后传入更新指令。

例如,更新 my_index 索引之前先查询。

json 复制代码
GET my_index/_doc/233

返回结果。

json 复制代码
{
  "_index": "my_index",
  "_id": "233",
  "_version": 1,
  "_seq_no":0, 
  "_primary_term":1
}

将获取的 _seq_no_primary_term 传入更新指令。

json 复制代码
PUT my_index/_doc/233?if_seq_no=0&if_primary_term=1

执行成功。

相关推荐
斯特凡今天也很帅26 分钟前
Elasticsearch数据库专栏(一)Kinaba的基础使用
elasticsearch·kibana
不爱吃糖的程序媛7 小时前
鸿蒙三方库适配读懂 `thirdparty/AES/.gitignore`:哪些文件不该进 Git?
git·elasticsearch·harmonyos
A__tao7 小时前
一键实现 SQL → ES Mapping 转换,支持自定义 `text` 为 `json` 转换
sql·elasticsearch·json
ShawnLiaoking20 小时前
pycharm 上传更新代码
ide·elasticsearch·pycharm
果粒蹬i21 小时前
Elasticsearch 单机部署实测:安装流程、常见坑点与远程访问配置
大数据·elasticsearch·搜索引擎
AC赳赳老秦21 小时前
OpenClaw数据库高效操作指南:MySQL/PostgreSQL批量处理与数据迁移实战
大数据·数据库·mysql·elasticsearch·postgresql·deepseek·openclaw
历程里程碑1 天前
二叉树---二叉树的中序遍历
java·大数据·开发语言·elasticsearch·链表·搜索引擎·lua
Elastic 中国社区官方博客1 天前
使用 Elasticsearch + Jina embeddings 进行无监督文档聚类
大数据·人工智能·elasticsearch·搜索引擎·全文检索·jina
ACGkaka_1 天前
ES 学习(九)从文本到词元:分词器如何“拆解“你的数据
大数据·学习·elasticsearch
Elastic 中国社区官方博客1 天前
如何使用 LogsDB 降低 Elasticsearch 日志存储成本
大数据·运维·数据库·elasticsearch·搜索引擎·全文检索·可用性测试