最近在做日志搜集系统,涉及到Kafka到ES的数据解析写入,但是Kafka的写入效率远远高于ES,造成大量的数据在Kafka中积累,且ES的数据更新非常缓慢,最终造成了在Kibana中查询的时候发现,ES中的数据有接近9个小时的数据延迟,这显然是不可接受的。因此,必须着手优化ES的写入效率。在尽可能不改变已有配置的情况下,写入效率优先可以考虑以下两点。
必须使用bulk方式提交写入数据
一开始我们的解析器是通过单条数据的形式提交的数据,很明显这种方式在大数据量的时候就越来越慢,因此我们必须修改为批量提交的方式。ES的bulk提交有个限制就是一次性提交的数据量不能超过15MB,因此,在考虑一次性提交多少条数据比较合适的时候,这个参数无比重要。根据分析,我们目前的数据量一次性bulk提交5000条数据比较合适,约为5-6MB的样子。当然不是越多越好,也不是满满地一定要达到15MB的限制,那样的风险太大,对于我们来讲,能够提升速率满足需求即可。并且我们的程序优化过后能够满足随时根据参数调整bulk请求数量的消息数量大小。我们的k8s中对应的容器配置是这样的:
可根据实际情况调整bulk queue size
bulk queue size是ES的数据处理队列大小,由于ES在接收到数据之后需要做一些索引处理,因此需要将接收到的请求暂放到队列中进行缓冲处理,这个队列默认的值是根据机器的配置动态计算的,一般为200左右。为什么说要根据实际情况来调整呢?因为默认情况下,200左右的队列大小已经够用,比如我们现在的情况客户端配置的队列大小只有50。当然并发量实在是太大的时候,可以适当调整这个参数。需要在配置文件 elasticsearch.yml 中增加以下配置:
其他一些临时修改方案
主要是2个参数:index.refresh_interval 和 index.number_of_replicas 。为什么说是临时修改方案呢?因为这些方案需要修改索引配置,并且不能长期保持该方案运行,否则会引起稳定性的问题,必须在适当时候再调整回来。参考官方文档:https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html
相关推荐
ElasticSearch写入原理及优化案例,此文章深入刨析了ElasticSearch在put和get时的原理。并且对于批量数据写入时进行优化给出最佳的方案和示例
Elasticsearch Demo 读取word内容写入到Es上并展示在WebFrom页面上,简单查询根据关键字检索 并高亮显示。
消费kafka数据,然后批量导入到Elasticsearch,本例子使用的kafka版本0.10,es版本是6.4,使用bulk方式批量导入到es中,也可以一条一条的导入,不过比较慢。 <groupId>org.elasticsearch <artifactId>elastic...
进入正题之前,解决之前的一个疑问:Elasticsearch集群是否已经正确工作?截图时,只上传过一次小测试数据(143万条),设置为:从图中可以看出,ip10节点上设置的数据目录:data1和data2目录工作正常,但是数据相同...
Flink以Elasticsearch7为sink 如何写入数据 。es有用户名密码。以代码的形式指导如何操作。并且具体的操作在压缩包中有说明文档。请仔细阅读
(狂神)ElasticSearch快速入门笔记,ElasticSearch基本操作以及爬虫(Java-ES仿京东实战),包含了小狂神讲的东西,特别适合新手学习,笔记保存下来可以多看看。好记性不如烂笔头哦~,ElasticSearch,简称es,es是一个...
elasticsearch elasticsearch-6.2.2 elasticsearch-6.2.2.zip 下载
Elasticsearch优化及升级Elasticsearch优化内存优化(系统内存的50%,最大32G)-Xmx8g -Xms8g禁止交换区和最大映射文件数
es 批量写入数据到Elasticsearch
项目实战:Java一站式解决Hive内用Spark取数,新建ES索引,灌入数据,并且采用ES别名机制,实现ES数据更新的无缝更新,底层采用Spark计算框架,数据较快。
百度Elasticsearch实践及优化-高攀,看百度如何玩转elasticsearch,百度针对elasticsearch进行优化及开源
elasticsearch-8.2.3 windows 版本。 Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的...
一、概述 一般来说我们开发Elasticsearch会选择...2、elasticsearch-head (方便查看ES中的索引及数据) 3、Kibana(方便开发通过rest api 调试ES,有代码提示) 4、中文分词elasticsearch-analysis-ik (ik) 1、下载ela
elasticsearch-7.17.6及对应版本IK分词 适合人群:elasticsearch初学者 Elasticsearch 是位于 Elastic Stack 核心的分布式搜索和分析引擎。Logstash 和 Beats 有助于收集、聚合和丰富您的数据并将其存储在 Elastic...
docker run --name elasticsearch7.16.3 -p 127.0.0.1:9200:9200 -p 127.0.0.1:9300:9300 -e "discovery.type=single-node" -v /Users/xingyue/Home/xingyue/学习/工程化/es/elasticsearch.yml:/usr/share/elastic...
赠送jar包:elasticsearch-6.8.3.jar; 赠送原API文档:elasticsearch-6.8.3-javadoc.jar; 赠送源代码:elasticsearch-6.8.3-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.8.3.pom; 包含翻译后的API文档...
大数据 flink如何写入Elasticsearch5和Elasticsearch7
Linux环境下使用sqlplus工具将oracle中的数据导入到elasticsearch中。只需要在es_bulk_tool.properties配置sql即可实现数据的批量导入。在elasticsearch6中测试通过。shell脚本需要使用sqlplus。
赠送jar包:elasticsearch-6.3.0.jar; 赠送原API文档:elasticsearch-6.3.0-javadoc.jar; 赠送源代码:elasticsearch-6.3.0-sources.jar; 赠送Maven依赖信息文件:elasticsearch-6.3.0.pom; 包含翻译后的API文档...
Elasticsearch技术解析与实战+Elasticsearch权威指南两本电子书,合集共享,让你早日学习了解Elasticsearch