欢迎您来到潮人地东莞seo博客,本站专业免费分享多元化的seo网站优化技术干货以及解答seo各种常见问题的博客网站

热门关键词: seo优化 seo推广 seo技术 seo博客 seo网站推广怎么做 seo怎么做 新手做seo怎么做
当前位置:seo博客首页 > seo技术分享 >

seo优化技术:如何看待这种快照秒收方式-让Elasticsearch飞起来(性能优化实践干货)

发布时间:2023-07-24 07:16:08 文章出处:潮人地东莞seo博客 作者:东莞seo博客 阅读数量:

潮人地东莞seo博客小编下面跟大家分享关于seo优化技术:如何看待这种快照秒收方式-让Elasticsearch飞起来(性能优化实践干货)等问题,希望seo专员在做seo优化的过程中有所帮助,内容仅供参考。

让Elasticsearch飞起来-性能优化实践干货
seo优化技术:如何看待这种快照秒收方式-让Elasticsearch飞起来(性能优化实践干货)

0、题记

Elasticsearch性能优化的最终目的:用户体验酷。

关于酷的定义——著名产品人梁宁曾经说过:“当人们满意时,他们的状态被称为快乐。如果人们不满意,他们就会感到不舒服,并开始寻求。如果这个人能在寻找中立即得到满足,这种感觉就很酷了!”。

Elasticsearch的爽点是:快、准、全!

seo博客相关推荐阅读:seo技术博客分享:网站有那几种地方需要优化,如何做

阿里巴巴、腾讯、JD.COM、携程、滴滴、58等都对Elasticsearch的性能优化做了很多深入的实践总结,都是很好的参考。本文以Elasticsearch的酷点为基础,对性能优化进行了探讨。

1、集群规划优化实践

1.1基于目标数据量规划集群

在业务初期,经常被问到的问题需要几个节点的集群,内存和CPU需要多少,SSD需要多少?

最重要的考虑因素是:您的目标存储数据量是多少?针对目标数据量可以反推多少节点。

1.2留出容量Buffer

注:Elasticsearch有三条警戒水位线,磁盘利用率达到85%、90%、95%。

不同的警戒水位线会有不同的应急策略。

在这一点上,应规划磁盘容量选择。控制在85%以下是合理的。

当然,也可以通过配置进行调整。

1.3ES集群各节点尽量不要与其他业务功能重用一台机器。

除非内存很大。

例如,ES安装在普通服务器上 Mysql redis,业务数据量大后,必然会出现内存不足等问题。

1.4磁盘尽量选择SSDD

考虑到成本原因,Elasticsearch的官方文件必须推荐SSD。需要结合业务场景,

如果业务对写入和检索速率有较高的速率要求,建议使用SSD磁盘。

在阿里的业务场景中,SSD磁盘的速率是机械硬盘的5倍。

但因商业场景而异。

1.5内存配置合理

官方建议:堆内存的大小是官方建议:Min(32GB,机器内存大小/2)。

Medcl和wood大叔都明确表示,不需要设置32/31GB那么大,建议:热数据设置:26GB,冷数据:31GB。

整体内存大小没有具体要求,但内容越大,检索性能越好。

经验值供参考:每天200GB 在增量数据的业务场景中,服务器至少需要64GB内存。

除JVM外,还要有足够的预留内存,否则OOM往往会出现。

1.6CPU核数不要太小

CPU核数与ESThreadpol有关。它与写入和检索性能有关。

建议:16核 。

1.7超大量业务场景,可考虑跨集群检索

除非业务量级很大,比如滴滴和携程的PB 业务场景,否则基本不需要跨集群检索。

1.8集群节点数不需要奇数

ES内部维护集群通信不是基于zookeeper的分发部署机制,所以不需要奇数。

但是discovery.zen.minimum_master_nodes的值应设置为:候选主节点的数量/2 1、能有效避免脑裂。

1.9节点类型优化分配

集群节点数:<=3,建议:所有节点的master:true,data:true。既是主节点也是路由节点。集群节点数:>3.根据业务场景的需要,建议Master节点和协调/路由节点逐步独立。

1.10建议冷热数据分离

物理上提高了热数据存储SSD和普通历史数据存储机械磁盘的检索效率。

seo优化技术:如何看待这种快照秒收方式-让Elasticsearch飞起来(性能优化实践干货)

2、索引优化实践

Mysql等关系数据库要分库、分表。Elasticserach也要充分考虑。

2.1设置多少个索引?

建议根据业务场景进行存储。

不同渠道类型的数据应分为索引存储。例如:知乎采集信息存储到知乎索引;APP采集信息存储到APP索引。

2.2设置多少分片?

建议根据数据量进行测量。

经验值:建议每片尺寸不超过30GB。

2.3分片数设置?

建议根据集群节点的数量规模,建议>=集群节点的数量。

5个节点的集群,5个分片比较合理。

注:除非reindex操作,否则不能修改分片数。

2.4副本数设置?

除非你对系统的健壮性有很高的要求,比如银行系统。可以考虑两份以上。

否则,一个副本就足够了。

注:可通过配置随时修改副本数。

2.5不要在一个索引下创建多个type

即便你是5.考虑到未来版本升级等后续可扩展性,X版本。

建议:一个索引对应一个type。

6.默认对应_xxdoc,5.x您直接对应type统一为doc。

2.6根据日期规划索引索引

随着业务量的增加,单一索引与数据量激增的矛盾突出。

按日期规划索引是必然选择。

好处1:历史数据可以在几秒钟内删除。非常适合历史索引delete。注:如果索引需要使用delete_by_query force_merge操作慢,删除不彻底。

好处2:便于冷热数据的单独管理,检索近几天的数据,直接物理指定相应日期的索引,速度快!

操作参考:模板使用 使用rolloverAPI。

2.7必须使用别名

与mysql不同,ES更改索引名称。使用别名是一个相对灵活的选择。

3、优化实践的数据模型

3.1不要使用默认的Mapping

默认Mapping的字段类型由系统自动识别。其中,string类型默认分为两种类型:text和keyword。如果您的业务不需要单词分割和搜索,只需要准确匹配,只设置为keyword。

根据业务需要选择合适的类型,有利于节省空间,提高精度,如浮点型的选择。

3.2Mapping各字段的选择流程

3.3选择合理的分词器

常见的开源中文分词器包括:ik分词器、ansj分词器、hanlp分词器、结巴分词器、海量分词器、“elasticsearch最全分词器比较及使用方法”搜索可查看比较效果。

如果选择ik,建议使用ik_max_word。因为粗粒度的分词结果基本上包括细粒度ik_smart的结果。

3.4date、long、还是keyword

根据业务需要,如果需要根据时间轴进行分析,则必须进行date类型;

如果只需要秒返回,建议使用常州网站seo优化推广优化keyword。

4、数据写入优化实践

4.1要不要秒级响应?

Elasticsearch近实时的本质是:最快1s写入的数据可以查询。

如果refresh_interval设置为1s,必然会产生大量的segment,影响检索性能。

因此,可以将非实时场景调大,设置为30s甚至-1。

4.2减少副本,提高写入性能。

写入前,副本数设置为0,

写入后,将副本数设置为原始值。

4.3能量批量不单条写入

批量接口为bulk,批量尺寸应与队列尺寸相结合,而队列尺寸、线程池尺寸、机器cpu核数。

4.4禁用swap

在Linux系统中,通过运行以下命令暂时禁用交换:

sudoswapofff-a

5、实战检索聚合优化

5.1禁用wildcard模糊匹配

达到TB的数据量级 甚至更高之后,wildcard在多字段组合的情况下很容易卡死,甚至导致集群节点崩溃停机。

后果不堪设想。

替代方案:

方案1:对于精度要求高的方案:两套分词器、standard和ik的组合,使用match_phrase进行检索。

方案二:对于精度要求低的替代方案:建议通过match_phrase和slop查询ik分词。

5.2使用match匹配极小概率的概率

显然,中文match匹配的结果是不准确的。短语匹配将用于大型商业场景。”match_phrase"。

match_phrase结合合理的分词词典和词库,会使搜索结果更加准确,避免噪音数据。

5.3结合业务场景,大量使用filter过滤器

filter缓存机制无疑会使检索更快,而不需要使用计算相关评分的场景。

例如:过滤邮编号。

5.4控制返回字段和结果

和mysql查询一样,在业务开发中,select*操作几乎是不必要的。

同理,在ES中,_sourc崇义seo网站优化e返回所有字段也是不必要的。

通过_source控制字段的返回,只返回与业务相关的字段。

网页文本content,网页快照html_content类似字段的批量返回,可能是业务设计缺陷。

显然,摘要字段应提前写入,而不是在截取处理之前查询content。

5.5分页深度查询和遍历

使用分页查询:from size;

遍历使用:scroll;

并行遍历使用:scroll slice。

考虑集合业务的选择和使用。

5.6合理设置聚合Size

聚合结果是不准确的。除非你把size设置为2的32次幂-1,否则聚合结果是取每个片段的topsize元素后综合排序的值。

实际业务场景需要注意准确的反馈结果。

尽量不要获得全聚合结果——从业务层面获得Topn聚合结果值是非常合理的。因为排名靠后的结果值意义不大。

合理实现5.7聚合分页

当显示聚合结果时,聚合后分页必然会面临问题,ES官员不支持聚合后分页,因为性能原因。

若需要聚合后分页,则需要自开发实现。包括但不限于:

方案一:每次取聚合结果,获取内存中分页返回。

方案二:scrolll结合scrollafter集合redis实现。

6、业务优化

让Elasticsearch做它擅长的事情,显然,它更擅长基于倒排索引进行搜索。

建议Elasticsearch更有效地检索:

1)要做好“前戏”

在写入ES之前的ETL阶段,将字段提取、倾向分析、分类/聚类、相关性判断放在ETL阶段;

2)“睡衣”产品经理

基于各种奇妙的业务场景,产品经理可能会提出各种不合理的需求。

作为一名技术人员,我们应该“通知理性”,向产品经理解释搜索引擎的原理,Elasticsearch的原理,什么可以做,什么真正的“妾不能做”。

7、小结

在实际的业务发展中,公司一般要求马不吃草,想马快跑。

Elasticsearch开发也是如此,硬件资源不足(cpu、几乎没有办法提高内存和磁盘的性能。

除了检索聚合,让Elasticsearch做N多相关和不相关的工作,然后得出结论,“Elastic太慢了,没有想象的那么快”。

类似的场景也出现在你的脑海里吗?

提供相对NB的硬件资源,做好各种前期准seo网站关键词优化乚品达备,让Elasticsearch轻装上阵,相信你的Elasticsearch也会飞起来!

以上是潮人地东莞seo博客跟大家分享关于seo优化技术:如何看待这种快照秒收方式-让Elasticsearch飞起来(性能优化实践干货)等问题,希望能对大家有所帮助,若有不足之处,请谅解,我们大家可以一起讨论关于网站seo优化排名的技巧,一起学习,以上内容仅供参考。

阅读全文
本文标题"seo优化技术:如何看待这种快照秒收方式-让Elasticsearch飞起来(性能优化实践干货)":http://www.cr-seo.com/jsfx_21994.html
本文版权归潮人地seo博客所有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
标签:
合作伙伴