您当前的位置:首页 > 电脑百科 > 站长技术 > 搜索引擎

Elasticsearch调优索引速度-最佳实践

时间:2020-08-24 11:29:43  来源:  作者:

Elasticsearch是非常灵活且功能丰富的搜索引擎,提供了开箱即用的美好体验。但是,在实战业务场景中,经常会出现远远低于预期的索引和查询速度。

下面是针对Elasticsearch索引性能进行调优的建议。

一、使用批量请求(bulk requests)

批量请求将产生比单文档索引请求好得多的性能。

为了知道批量请求的最佳大小,尝试在具有单个分片的单个节点上运行基准测试。 首先尝试索引100个文档,然后是200,然后是400,等等。 当索引速度开始稳定时,就达到了数据批量请求的最佳大小。

一般而言,宁可批量索引文档少一些,而不是在太多文档的方向上犯错。 请注意,如果批量请求文档太大,可能会使Elasticsearch集群受到内存压力,因此建议避免每个请求超出几十兆字节,即使较大的请求看起来效果更好。

二、使用多个工作者(workers)或线程向Elasticsearch发送数据

发送批量请求的单个线程不太可能将Elasticsearch集群的索引容量最大化。 为了使用集群的所有资源,可以从多个线程或进程发送数据。 除了更好地利用集群的资源,这应该有助于降低每个fsync的成本。

请注意TOO_MANY_REQUESTS(429)响应代码(JAVA客户端的EsRejectedExecutionException),这是Elasticsearch提示无法跟上当前索引速率的方式。 发生这种情况时,应该再次尝试暂停索引,理想情况下使用随机策略调整索引并发量。

与调整批量请求(bulk request)大小类似,只有测试才能确定最佳的worker数量。 这可以通过逐渐增加工作者数量来测试,直到集群上的I/O或CPU饱和。

三、调大refresh interval参数

为了让索引文档对查询可见,需要执行refresh操作,该操作是有成本的。当正在进行索引时,不断地执行refresh操作,将影响索引速度。

默认的index.refresh_interval是1s,这迫使Elasticsearch每秒创建一个新的分段。 增加这个参数值(比如说30s)将提升索引速度。

PUT INDEX-NAME/_settings

{

"refresh_interval" : "30s"

}

四、初始化数据加载临时禁用refresh和replicas

如果需要一次加载大量数据,则应该将index.refresh_interval设置为-1,并将index.number_of_replicas设置为0,来禁用刷新(refresh)。这会暂时使索引处于危险之中,因为任何分片的丢失都将导致数据丢失,但是同时索引将会更快,因为文档只被索引一次。初始加载完成后,可以将index.refresh_interval和index.number_of_replicas设置回其原始值。

五、禁用swApping交换内存

通过禁止swap交换内存,确保操作系统不会交换出Java进程。

具体禁用swapping的操作,可以参考下面链接:

https://www.elastic.co/guide/en/elasticsearch/reference/7.0/setup-configuration-memory.html

六、提供内存给filesystem cache

文件系统缓存(filesystem cache)将用于缓冲I/O操作。 确保运行Elasticsearch的节点获得至少一半的主机内存,提供给filesystem cache。

七、使用自动生成的id(auto-generated ids)

索引具有显式id的文档时,Elasticsearch需要检查具有相同id的文档是否已经存在于相同的分片中,这是费时的操作,并且随着索引增长而变得更加费时。 通过使用自动生成的ID,Elasticsearch可以跳过这个检查,这使索引更快。

PUT test-index

{

"settings":{

"number_of_shards": 3,

"number_of_replicas": 1

}

}

POST test-index/_doc

{

"sku": "002",

"title": "bbb"

}

GET test-index/_search

Elasticsearch调优索引速度-最佳实践

 

八、使用更快的硬件

一般而言,索引是I/O密集的,需要准备如下硬件:

(1)为filesystem cache分配更多的内存;

(2)使用SSD硬盘

(3)使用local storage(不要使用NFS、SMB 等remote filesystem)

九、索引缓存区(Indexing buffer size)

如果节点只做大量的索引,确保index.memory.index_buffer_size足够大,每个分片最多可以提供512 MB的索引缓冲区。超过这一设置,索引性能通常也不会提升。

Elasticsearch采用该设置(Java堆的百分比,或者绝对字节大小),并将其作为所有活动分片(active shards)的共享缓冲区。非常活跃的分片自然比执行轻量级索引的分片,更多地使用这个缓冲区。

默认设置为 10%,通常是足够的。如我们给JVM 10GM内存,索引缓冲区将为1GB,这足以两个索引很重的分片。



Tags:Elasticsearch   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一、环境准备1.1、环境列表 节点名称 系统 ip地址 es-node1 centos7.6 192.168.10.128 es-node2 centos7.6 ...【详细内容】
2021-07-03  Tags: Elasticsearch  点击:(117)  评论:(0)  加入收藏
Elasticsearch(简称ES) 是一个分布式、高扩展、高实时的搜索与数据分析引擎,它也是一个“存储库”。它能很方便地使大量数据具有搜索、分析和探索的能力。充分利用 ES 的水平伸...【详细内容】
2021-06-22  Tags: Elasticsearch  点击:(89)  评论:(0)  加入收藏
作者:LX 一、 环境搭建 1、 启动Spark集群服务 1)启动Spark集群 2)子节点加入集群 3)查看是否加入成功 2、启动Elasticsearch数据库 1)可以启动自己安装的Elasticsearch数据库...【详细内容】
2021-06-11  Tags: Elasticsearch  点击:(132)  评论:(0)  加入收藏
环境:elasticsearch7.8.0索引模板通过事先定义好的模板,在创建索引时,如果索引名称与模版中定义的索引模式匹配那么就会自动应用模版中的配置信息。如果有多个索引模板被匹配,那...【详细内容】
2021-05-27  Tags: Elasticsearch  点击:(203)  评论:(0)  加入收藏
作者:中华石杉来源:石杉的架构笔记(ID:shishan100)目录:1. 一道面试题的引入:2. 性能优化的杀手锏:Filesystem Cache3. 数据预热4. 冷热分离5. ElasticSearch 中的关联查询6. Docum...【详细内容】
2021-03-04  Tags: Elasticsearch  点击:(133)  评论:(0)  加入收藏
基本概念定义 一个分布式的实时文档存储,每个字段 可以被索引与搜索 一个分布式实时分析搜索引擎 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据用途 ...【详细内容】
2020-11-09  Tags: Elasticsearch  点击:(119)  评论:(0)  加入收藏
时下不论是在全文搜索领域还是大数据即时处理领域ELK都一枝独秀,而ELK的核心在于Elasticsearch,ELK很秀源于Elasticsearch很棒。很多可能用过ELK但是对其核心Elasticsearch却...【详细内容】
2020-10-26  Tags: Elasticsearch  点击:(80)  评论:(0)  加入收藏
1. 简述 Elasticsearch 是基于 Lucene 开发的一个分布式全文检索框架,向 Elasticsearch 中存储和从 Elasticsearch 中查询,格式是json。 向 Elasticsearch 中存储数据,其实...【详细内容】
2020-10-12  Tags: Elasticsearch  点击:(58)  评论:(0)  加入收藏
Elasticsearch作为一门全文检索技术,那它是如何使用的呢? 先学习Elasticsearch的一些语法,后续再在项目中实战应用。一、IK分词器这个IK分词器有什么用?为什么要用它?要知道计算...【详细内容】
2020-09-18  Tags: Elasticsearch  点击:(115)  评论:(0)  加入收藏
随着移动互联网、物联网、云计算等信息技术蓬勃发展,数据量呈爆炸式增长。如今我们可以轻易得从海量数据里找到想要的信息,其中离不开搜索引擎技术的帮助。...【详细内容】
2020-09-11  Tags: Elasticsearch  点击:(114)  评论:(0)  加入收藏
▌简易百科推荐
今天不讲信息流,讲点其他的,比如搜索搜索是什么东西?见过开店卖东西吧,原理大同小异。比如我在步行街租个店铺,开个鞋店,每天在店里等着来步行街的人进我店里买我的鞋。百度搜索就...【详细内容】
2021-12-24  运营王明皓    Tags:搜索   点击:(9)  评论:(0)  加入收藏
在过去的时间中,我写了比较多的关于谷歌SEO推广,今天来写写GoogleAds广告账户免费诊断分析。今天我们的主题是:如何借助GoogleAds广告账户免费诊断分析工具,来诊断并优化你的Goo...【详细内容】
2021-10-26  优易化海外营销推广    Tags:GoogleAds   点击:(43)  评论:(0)  加入收藏
霸屏通俗来讲就是霸占屏幕,百度霸屏就是在百度搜索的结果中,除了竞价内容,剩下的都是我们品牌词或网站的内容。以用户的搜索习惯来说,一般翻两三页就不会再继续翻下去了。所以我...【详细内容】
2021-10-22  聪少爱学堂    Tags:霸屏引流   点击:(50)  评论:(0)  加入收藏
网络推广计划表示在网站优化时,内容优化也是重中之重,其中有关文章的优化也让站长们苦恼不已,因为不太清楚蜘蛛对网站文章的质量评判是如何的,很难做到更精准的蜘蛛“取向”,那么...【详细内容】
2021-10-22  云霸屏    Tags:搜索引擎   点击:(45)  评论:(0)  加入收藏
我们在做SEO优化的过程中,通常都会用到百度站长平台、5118、站长工具等seo工具,用来分析查询关键词排名。特别是百度站长平台中的分析数据很多,其中百度站长工具中的流量与关键...【详细内容】
2021-10-22  双丝网络    Tags:百度站长平台   点击:(35)  评论:(0)  加入收藏
网络推广费用了解到,网站关键词排名效果想要更好,就要扎实的做好优化工作。关键词排名高的网站能更优秀的出现在搜索引擎首页,获得更多的用户浏览,得到更高的权重,从而给企业带来...【详细内容】
2021-09-25  云霸屏  搜狐号  Tags:蜘蛛   点击:(39)  评论:(0)  加入收藏
百度搜索贸易风算法,消除了使用翻页键诱导用户行为,简单地告诉我们,只要你的翻页按钮存在异常跳转行为,无论跳转到哪个页面,都属于该算法的覆盖范围。百度的搜索交易风算法主要攻...【详细内容】
2021-08-31  羽西223    Tags:信风算法   点击:(66)  评论:(0)  加入收藏
1 前言现今互联网上的很多产品、战略决策都由数据驱动,以BulletTech为例,在运营微信公众号时,通过后台数据我们对每篇文章都会进行流量来源、裂变和阅读完关注等重要指标的监控...【详细内容】
2021-08-02  BulletTech    Tags:Google Analytics   点击:(94)  评论:(0)  加入收藏
昨晚松松编辑杰哥了解到,百度搜索最近对算法更新了,全面升级“蓝天算法”2.0版本,主要针对高权重网站出租二级目录和二级域名行为,这是要开始加大清洗目录出租站点了吗? 根据杰...【详细内容】
2021-07-29  卢松松    Tags:蓝天算法   点击:(76)  评论:(0)  加入收藏
网罗天下谈运营2021-07-20在做SEO的过程中,对于企业主而言,没有人刚开始建立网站的时候就会先知先觉,采用完全正确的SEO优化方法,这很必然会导致一些问题,比如:① 站内目录层级繁...【详细内容】
2021-07-21  Lollipop    Tags:网站不收录   点击:(81)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条