elastisearch专题-如何优化es的写入性能

【Elasticsearch】优秀实践-你的ES为什么写的慢了? 前言 经常会有人吐槽,Elasticsearch为什么写着写着突然就慢了? 笔者总结了常见的一些导致写入慢的场景,已供大家排查。 话不多说,进入正题… Elasticsearch写入慢问题排查思路 Elasticsearch的写入场景相对比较简单,绝大部分场景下我们都是使用bulk API进行写入操作,列举了下面一些场景可能会导致写入慢的问题。 场景1 内存参数配置不合理。 是否给El... 阅读详情

目标

写入性能优化的目标:增大写的吞吐量,越大越好

可以着手优化的方向

  • 客户端: 多线程,批量写
  • 服务器端:使用更好的硬件配置。观察CPU/IO,线程,堆栈的状况。

细节

服务器端的一些方案

  1. 降低IO操作
    • 使用es自动生成文档的id/ 修改一些es的配置,入refresh interval
  2. 减少CPU和存储的开销
    • 减少不必要的分词,减少不必要的doc_values, 文档中的字段尽量保证同样的顺序以保证压缩率
  3. 尽量实现写入和分片的负载均衡,实现水平扩展
    • shard filtering,write load Balancer
  4. 调整Bulk的线程池和队列
  5. es的默认配置,考虑了数据的可靠性和搜索的实时性,不要盲目修改。一切的优化都要基于高质量的数据建模。

高质量建模的实践

  1. 只需聚合不需要搜索,index设置成false。
  2. 不需要算分,norms设置成false。
  3. 不要对字段使用默认的dynamic mapping,会生成过多的字段,对性能产生较大的影响。
  4. index_options,考虑在创建倒排序索引时,哪些字段需要被加入到道排序索引当中。
  5. 关闭_source,减少IO,合适指标型数据

追求极致的写入速度

牺牲数据的可靠性和搜索的实时性来换取性能,可以在项目数据初始化的时候使用

  1. 牺牲可靠性: 副本数设置成0,写完之后再调整回去
  2. 牺牲搜索的实时性:可以将refresh interval的时间设置的大一些,同时需要考虑将index_buffer_size的数值填大些
  3. 牺牲可靠性,修改transLog的配置

数据写入es的过程

  • refresh,将文档保存在index_buffer中,以refresh_interval为间隔时间,清空buffer,生成segment,segment会先存放在系统的缓存中,并开放搜索,提升搜索的实时性。
  • translog,从名称上可以看出它是个日志文件,它可以帮助es宕机时,segment就算没有写入到磁盘中,重启机器后,数据也是可以恢复的。默认配置,每次请求都会落盘。
  • flush, 删除旧的translog,将segment写入到磁盘当中,更新commit point 并写入磁盘。es自动完成,可以优化的点不多。

translog

降低translog的频率,同时也是会降低容灾能力
* index.translog.durability: 默认是request,每个请求都落盘,设置成async,异步写入
* index.translog.sync_interval, 设置成60秒,每分钟执行一次
* index.translog.flush_threshod_size: 默认是512mb, 可以适当调大,超过这个值时,会触发flash。

bulk,线程池,队列大小

  1. 单个bulk请求体的数据量不要太大,官方建议在5-15MB
  2. bulk请求超时时间要足够长,建议60秒以上
  3. 写入端尽量将数据轮询到不同的节点上

例子
在这里插入图片描述

*
小白指南:elasticsearch面试题基础篇详解 深入解析Elasticsearch核心概念与常见es面试题,涵盖倒排索引、分片机制及查询优化,帮助求职者掌握关键技术点,轻松应对大数据搜索相关岗位的技术考察。 阅读详情

相关推荐

在Anolis OS 8上部署Elasticsearch 7.16.1与JDK 11的完整指南

Anolis OS是龙蜥社区推出的开源Linux发行版,兼容CentOS生态,适用于企业级应用场景。输出应包含细粒度分词结果(如“中华”、“人民”、“共和国”)。路径并重新加载环境变量。下载新版本JDK,更新。等内置用户设置密码。

Arvin627的博客 2132

ES 性能调优,这可能是全网最详细的 Elasticsearch 性能调优指南

Elasticsearch 读写性能调优 ES 架构和Mapping优化

Elastic开源社区 3万+

【es】将 elasticsearch 写入速度优化到极限

1.概述 转载:将 elasticsearch 写入速度优化到极限 基于版本: 2.x – 5.x 在 es 的默认设置,是综合考虑数据可靠性,搜索实时性,写入速度等因素的,当你离开默认设置,追求极致的写入速度时,很多是以牺牲可靠性和搜索实时性为代价的.有时候,业务上对两者要求并不高,反而对写入速度要求很高,例如在我的场景中,要求每秒200w 条的平均写入速度,每条500字节左右 接下来的优化基于集群正常运行的前提下,如果是集群首次灌入数据,可以将副本数设置为0,写入完毕再调整回去,这样副本分片只需要拷贝.

九师兄 4529

Elasticsearch专栏-8.es读写性能及优化

es读写性能及优化

zjun1001的博客 7802

CSP-J 复试考点

可以用来训练思维,对于学习时间短的同学,动态规划可以帮助你迅速进入编程状态,也有助于帮你发现题目背后可能隐藏的更简便的算法。动态规划、贪心都是和子问题相关的,动态规划的基本思想是将一个大的问题划分成子问题,接着分别求解,而且能够将一些重复的计算记忆化,大大提高效率。难度加大,会涉及到二分、动态规划之类的算法,容易遗漏考虑点,不易得全分,考试的时候要注意全面性。一般是压轴题,算法不明显,剪枝的搜索、动态规划、状压 DP、树形 DP 、树、图等。枚举算法是指,列举出所有可能的取值,从中找出最优解。

GuanHeTian的博客 2214

【OpenVINO】OpenVINO C# API 常用 API 详解与演示

在本文中我们基于模型推理流程,演示了OpenVINO C# API使用方法,并和OpenVINO C++API进行了对比,展示了OpenVINO C# API与C++API在使用的区别,这也对使用过C++ API的开发者十分友好,上手会十分容易。在本文中我们只展示了基础的模型推理流程代码,也对各个API进行了测试,针对其他比较高级的API方法,我们后续会继续进行测试其他API方法,向各位开发者展示其用法。

grape_yan的博客 1539

es 优化建议

6、mapping优化,减少写⼊cpu开销,对于不需要查询在字段,配置"index":false,关闭倒排, 对于不需。4、字段如果只做terms查询, 如果没有range和agg聚合需求, 建议改为活着再插入一个keyword类型。7、集群索引⽐较⼩,存在mb,kb级别索引,主分⽚超过数据节点个数,建议调整为单分⽚,单主分⽚。8、业务存在索引 1主1副,主分⽚472G⼤⼩ 建议: reindex 拆分索引,没有。数据增量的话,建议8主1副,并且创建新索引,之后的数据写⼊到新索引中。

qq_35640866的博客 547

Polyworks脚本开发学习笔记(一)-脚本开发环境

详细的总结和记录了利用Polyworks进行脚本开发的一些方法和心得

qq_43662503的博客 6803

Elasticsearch 写入优化,从 3000 到 8000/s,让你的 ES 飞起来。。。

背景 基于elasticsearch-5.6.0 机器配置:3个云ecs节点,16G,4核,机械硬盘 优化前,写入速度平均3000条/s,一遇到压测,写入速度骤降,甚至es直接频率gc、oom等;优化后,写入速度平均8000条/s,遇到压测,能在压测结束后30分钟内消化完数据,各项指标回归正常。 生产配置 这里我先把自己优化的结果贴出来,后面有参数的详解: elasticsearch.yml中增加如下设置 indices.memory.index_buffer_size: 20% indices.mem

Java技术栈,分享最主流的Java技术 1057

9篇2章2节:GBD 数据库的数据申请详解

无论您是初入公共卫生领域的学生、资深的科研工作者,还是政策决策者,GBD数据库都将成为您数据分析与决策支持中不可或缺的重要工具。

MD Code 2600

一文就够-InfiniBand 技术全面解析:从原理到实践的通俗易懂指南

想象一下,在一个超级数据中心里,成千上万台服务器需要像蜜蜂群体一样高效协作。如果用传统的网络连接,就像让每只蜜蜂都排着队传递消息,效率极低。InfiniBand(简称 IB)就是为了解决这种 "通信拥堵" 而生的高速网络技术,它专门为高性能计算(HPC)、数据中心和云计算环境设计,就像给服务器之间搭建了多条高速公路,让数据可以飞驰而过。

jundao1997的专栏 1395

Elasticsearch调优

es的默认配置是一个非常合理的默认配置,绝大多数情况下是不需要修改的,如果不理解某项配置的含义,没有经过验证就贸然修改默认配置,可能造成严重的后果。比如max_result_window这个设置,默认值是1W,这个设置是分页数据每页最大返回的数据量,冒然修改为较大值会导致OOM。ES没有银弹,不可能通过修改某个配置从而大幅提升ES的性能,通常出厂配置里大部分设置已经是最优配置,只有少数和具体的业务相关的设置,事先无法给出最好的默认配置,这些可能是需要我们手动去设置的。

qq_36864672的博客 1967

三维重建(十八)——colmap的使用(粗浅)

三维重建(十八)——colmap的使用(粗浅)

河海大学研究生在读的学习笔记 1376

elastisearch多索引查询解析

通过上述流程,new SearchRequest(“index1”, “index2”) 实现了对多个索引的查询。Elasticsearch 会将请求分发到指定的索引,并在每个索引的所有分片上执行查询。最后,结果会被合并并返回给客户端。这种方式保证了查询能够高效地处理多个索引,同时也充分利用了集群的分布式特性。索引数量应该根据你的具体需求和集群的实际情况来确定。使用别名和生命周期管理可以帮助你更好地管理索引。监控和调整策略是保持集群高性能的关键。

LuckFairyLuckBaby的博客 1972

AUTOSAR SHE 密钥更新协议

依赖内存槽的使用用例,内存槽有不同的保护协议。M2是新的计数值C_ID‘,相应的标志位F_ID',0填充第一个块,以及新的密钥K_ID'的组合的CBC算法加密的消息。例如,我要更新一个MASTER_ECU_KEY, 那么参考上表,我需要知晓Non-volatile的MASTER_ECU_KEY (即授权密文为MASTER_ECU_KEY自己的密文).内存的更新协议分为两部分,第一部分是实际内存更新到发送一个秘密且真实的key到SHE,然后第二部分为验证,即提供给后台一个key更新成功的证据。

weixin_46481662的博客 3280

python实现马丁策略(股市) (附完整源码)

python实现马丁策略(股市) (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 604

elastisearch 安装

一、安装elasticsearch-rtf 1.jdk 1.8 安装教程 :https://blog.youkuaiyun.com/weixin_36634753/article/details/101079873 2.下载elastisearch-rtf 加了中文搜索:https://github.com/TBirdsWR/elasticsearch-rtf(最好下载zip包) 3.上传服务器上解压...

T-B的博客 216

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ES分布式架构及底层原理

参考:es详解 elasticsearch设计的理念就是分布式搜索引擎,底层实现还是基于Lucene的,核心思想是在多态机器上启动多个es进程实例,组成一个es集群。一下是es的几个概念: 接近实时 es是一个接近实时的搜索平台,这就意味着,从索引一个文档直到文档能够被搜索到有一个轻微的延迟 集群(cluster) 一个集群有多个节点(服务器)组成,通过所有的节点一起保存你的全部数据并且...

Beal的博客 394

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

elastisearch Elasticsearch出现circuit_breaking_exception异常

curl -XPUT "localhost:9200/_cluster/settings" -H 'Content-Type: application/json' -d '{ "persistent" : { "indices.breaker.fielddata.limit" : "40%" } }'

我只是个小学生 能力有限 一直抱着学习的态度 5432

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Elastisearch查询最近一年消费金额排名前五的用户

现在这个查询已经满足我们的需求了,能够得到我们想要的结果,接下来我们尝试优化下它。上下文中,因为它们是用于过滤数据的,这可以提高性能并允许 Elasticsearch 使用缓存。实现这一需求的主要思路是通过 Elasticsearch 的聚合功能来实现。再加一个限定条件,收货地址是爱荷华州的,需要在。聚合可以用来获取每个分组中的部分文档数据。查询来过滤出过去一年内的订单记录。字段分组,并在每个分组内计算。为了获取用户的完整姓名,我们在。定义一个与索引结构相对应的实体类。定义聚合结果的 DTO 类。

qq_47741012的博客 1119

elastisearch 中multi_field得使用

需求: 接收一个时间得毫秒值,转换为date类型,并且需要这个毫秒值做long类型得范围方便查找。 方案:考虑重新建索引,修改mapping,time字段用multi_field,定义为两种类型,一种式date一种是long。 实践:在实践种创建索引时候,出错。 "time":{ "type": "multi_field", ...

qqjjjaa11的专栏 3258

Elasticsearch:让数据搜索变得简单高效的神器

Elasticsearch(ES)是一个基于Lucene的分布式搜索和分析引擎,用于快速处理大规模数据。它具有毫秒级响应、强大扩展性和丰富分析功能,广泛应用于电商搜索、日志分析和推荐系统等场景。核心概念包括索引(类似数据库)、文档(JSON格式数据)和映射(字段定义)。ES支持多种查询优化和聚合分析,还能实现地理位置搜索。生产环境中需注意性能调优、安全配置和定期备份。随着AI技术发展,ES正变得更加智能化,成为大数据时代不可或缺的搜索分析工具。

2501_93502090的博客 618

以图搜图实现四之Elastisearch Aknn 插件Api使用及其性能

1.创建LSH模型 给定矢量样本,创建局部敏感散列(LSH)模型并将其存储为Elasticsearch文档。 POST :9200/_aknn_create { “_index”: “aknn_models”, “_type”: “aknn_model”, “_id”: “twitter_image_search”, “_source”: { “_aknn_descriptio...

weixin_42435657的博客 1553

ElastiSearch--批量操作

mget,批量查询多条数据,可减少网络开销次数。 批量查询id为1和2的数据 GET /_mget { "docs":[ { "_index":"test_index", "_type":"test_type", "_id":1 }, { "_index":"test_index", "_type":"test...

BtWangZhi的博客 366

elastisearch安装和运维常用API

elasticsearch 是一个文档型数据库,在 k8s 运维中,通常和 kibana 和 fluentd 结合作为 k8s 上的日志数据库,本文将介绍 elasticsearch 的搭建和一些运维时常用的 api。

qq_42895490的博客 470

Java High Level REST Client实现Elastisearch批量插入

通过java后端实现Elastisearch批量插入可使用BulkRequest request,同时也可以实现多个请求集中一起发送,直接上代码。 BulkRequest request = new BulkRequest(); for (Object object : Objects) { request.add(new IndexRequest(index,type).source(JSONObject.toJSONString(object ), XCon

hellow0rd的博客 2735
上一篇: 领域驱动模型设计-实战
下一篇: elasticsearch专题-如何提高es的读性能
带着托托写代码
博客等级 码龄10年 113粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值