ES数据删除优化

简介: ES数据删除优化

记录一次在单位里做的删除优化,使用delete_by_query的时候发现了一个问题,就是删除效率太低。当打流日志并发变高的时候,删除往往跟不上ES数据增加的速度,导致磁盘占用率过高。



第一版尝试调整过相关代码的删除阈值,发现ES会在查询到大数据量的情况下删除失败,后面经过定位发现是并发写入和删除产生的版本冲突问题。


//新增conflicts=proceed.delete_by_query?conflicts=proceed



经过修改后,发现虽然解决了版本冲突导致的删除中断问题,但是在某些极端情况下还是会删除超时。

查询了一下官方文档,发现了2种解决方案

一种是ES的异步删除,返回一个taskId。

另外一种是多线程删除。


经过实际测试,决定使用第二种方式来应对当下的业务场景。

在代码中新增


scroll_size//这个参数是执行删除的时候,每次每个线程会查询的数据量,然后进行删除。//默认是100,就是说每个线程每次都会查询出100条数据然后再删除。slices//这个就相当于开启的线程数,同时会有多少个线程执行查询然后删除程序。//默认是1,就是同时只会有一个线程进行查询删除操作。delete_by_query?conflicts=proceed&scroll_size=5000&slices=10


注意:以上这2个值对于不同性能的机器往往是不一样的,以上的只是参考值,我们可以根据实际测试情况,比如删除多少数据,用多少线程,共计多少时间,来设置最符合我们当下业务的线程。

目录
相关文章
|
前端开发 API
ES 高级实战(四)查询 ES 数据
ES 高级实战(四)查询 ES 数据
1401 0
ES 高级实战(四)查询 ES 数据
|
30天前
|
存储 JSON 自然语言处理
es索引文档过程
Elasticsearch 索引文档流程:先通过 REST API 或客户端创建索引,定义文档结构的映射;接着索引 JSON 格式的文档,Elasticsearch 解析、索引并存储;最后,文档以倒排索引形式存储,支持高效全文搜索。
39 5
|
8月前
|
存储
ES批量写入数据
ES批量写入数据
287 1
|
8月前
|
JSON 前端开发 JavaScript
ES6(2015)-ES13(2022)新增特性大总结
ES6(2015)-ES13(2022)新增特性大总结
111 0
|
8月前
|
JavaScript 前端开发 索引
es6 数组新增哪些方法以及使用场景
es6 数组新增哪些方法以及使用场景
66 0
|
8月前
|
前端开发 JavaScript
ES6中 对象合并
ES6中 对象合并
53 0
|
JSON 移动开发 NoSQL
【ES系列九】——批量同步数据至ES
通过es官网提供的bulk方法进行实现
|
JavaScript 前端开发
ES6新增特性学习
ES6新增特性学习
ES5新增方法(一)
前言 今天和大家分享一下ES5中一些新增的方法。 一、数组方法 迭代(遍历)方法:forEach(),map(),filter(),some(),every() array.forEach(function(value,index,arr)) value:数组当前项的值 index:数组当前项的索引 arr:数组对象本身
|
测试技术 索引
ES数据删除优化
分享一下ES数据删除优化的相关经历,根据业务需要一共优化了3次,包含了其中踩到的坑和一些花时间解决的问题.
1119 0

热门文章

最新文章