首页 >> 中医减肥

一次ElasticSearch的转发性能优化实践

发布时间:2025年08月25日 12:20

status in (0,3) AND isDeleted=0;

比较慢检索分析方法

这个检索疑虑还挺多的,不过不是今日的信息化。比如这从前头不好的一点是还用了模糊检索fuzzy_transpositions,也就是检索ab的时候,ba也但会被命当中,其当中的语言不是今日的信息化,可以直接检索,我估计这个是的业务用了SDK自动转化的,从前头很多都是默认值。

第一质子化当然是用filter来代替match检索,一来filter可以缓存,另外避免这种无象征意义的模糊反之亦然检索,但是这个构造是有限的,并不是今日请教的关键点,日后忽略。

1、错用的数据一般来说

我们通过kibana的profile来顺利收尾分析方法,工期刚才在什么地方?es有一点就是开源社区很活跃,文档齐备,配套的机器也相当的易于和齐备。

可以注意到大部分的星期都白花在了PointRangQuery从前头去了,这个是什么检索呢?为什么这么工期呢?这从前就包括到一个es的知识点,那就是对于integer这种小数一般来说的处理事件。在es2.x的时代,所有的小数都是按keyword处理事件的,每个小数都但会造一个倒排资料库,这样检索虽然快速了,但是一旦好好覆盖范围检索的时候。比如 type>1 and type 之后es好好了一个构造,在integer的时候形态设计了一种像是b-tree的数据形态,较比较慢覆盖范围的检索,具体可以参看(

)

所以在这之后,所有的integer检索都但会被转成覆盖范围检索,这就造成了中间注意到的isDeleted的检索的解释。那么为什么覆盖范围检索在我们这个一幕下,就这么比较慢呢?能不可构造。

自已我们这个一幕是不只能停下来覆盖范围检索的,因为如果停下来倒排资料库检索就是O(1)的星期算法,将大大提升检索效率。由于的业务在创造资料库的时候,isDeleted这种配置文件落成了Integer一般来说,造成之前停下来了覆盖范围检索,那么只只能我们将isDeleted一般来说改换keyword停下来term检索,就能用上倒排资料库了。

无论如何这从前还包括到了es的一个检索构造。像是isDeleted这种配置文件,全无区分度的倒排资料库的时候,在检索的时候,es是怎么构造的呢?

2、多个Term检索的次序疑虑

无论如何,如果有多个term检索分别为的时候,他的分派次序,既不是你检索的时候,写进去的次序。

例如中间这个检索,他既不是日后分派source=5日后分派type=21按照你字符的次序分派过滤器,也不是同时所发分派所有的过滤器必要条件,然后日后取共同点。es很聪慧,他但会评估每个filter的必要条件的区分度,把较高区分度的filter日后分派,为了将可以较比较慢中间的filter尿素运动速度。比如creator=

0d754a8af3104e978c95eb955f6331be查出来之后10条记事,他就但会优日后分派这一条。

怎么能用的呢?其实也很一般来说,term造的时候,每一个term在写入的时候都但会记事一个词频,也就是这个term在全部文档从前注意到的次数,这样我们就能断定当前的这个term他的区分度较高者了。

3、为什么PointRangeQuery在这个一幕下相当比较慢

中间提到了这种检索的数据形态像是b-tree,他在好好覆盖范围检索的时候,相当有优势,Lucene将这颗B-tree的非小叶节点部分放在线程从前,而小叶节点紧紧相邻放置在FAT上。当作range检索的时候,线程从前的B-tree可以尽力更加快速有别于到依赖于检索必要条件的小叶节点块在FAT上的位置,之后对小叶节点块的加载仅仅都是次序的。

归纳就是这种形态适合覆盖范围检索,且FAT的加载是次序加载的。但是在我们这种一幕之下,term检索可就棘手了,数值型配置文件的TermQuery被转换为了PointRangeQuery。这个Query利用Block k-d tree顺利收尾覆盖范围查找运动速度相当快速,但是依赖于检索必要条件的docid论域在FAT上并非向Postlings list那样按照docid次序放置,也就无法付诸postings list上利用跳表好好蛙跳的操作方法。

要付诸对docid论域的更加快速advance操作方法,只能将docid论域拿出来,好好一些日后处理事件。这个处理事件反复在

org.apache.lucene.search.PointRangeQuery#createWeight这个方法从前可以加载到。这从前就不张贴冗总长的字符了,主要逻辑就是在创造scorer对象的时候,顺带日后将依赖于检索必要条件的docid都挑选来,然后结构成一个亦然docid论域的bitset,这个反复和结构Query cache的反复相当类似。之后advance操作方法,就是在这个bitset上收尾的。所有的工期都在利用于bitset上,因此可以注意到工期主要在build_scorer上了。

验证

找到原因之后,就可以开始验证了。将从前的integer一般来说全部改换keyword一般来说,如果的业务是不是有用到覆盖范围检索,某种程度但会报错。通过跟踪的平台的的平台直接修正可用,修正收尾之后,扩造资料库就生效了。

资料库翻转之后的敏感度也相当的明显,通过kibana的profile分析方法可以注意到,之后只能近似于100ms的PointRangQuery现在停下来倒排资料库,只只能0.5ms的星期。

之后这个资料库的平均latency在100ms+,这个是es分片处理事件的工期,从跟踪道德上开始,到跟踪道德上过后的打点,不举例来说网络传送星期和通到造立星期,单纯的分片内的数组的处理事件星期的平均数,正常人原因在10ms左右。

经过微调之后的工期降到了10ms内。

通过监测察看比较慢检索的总数,即刻缩减到了0。

未来会

后续将通过跟踪的平台侧的能力来必需的业务的检索,所有的integer我们但会默认你记事的是状态值,不只能顺利收尾覆盖范围检索,默认将但会修正为keyword一般来说,如果的业务确实只能覆盖范围检索,则可以通过后台日后修正回integer一般来说,这样可以必需在的业务不洞察es组态的原因下,也能占有较差的性能指标,耗费微电脑计算资源。

目前还遇上了很多疑虑只能构造。例如扩造资料库的时候,微电脑输出太低。公共战略性的微电脑输出分布区不均衡的疑虑,的业务的检索和水量不都从等各种各样的疑虑,要耗费微电脑资源就一定但会受制于这种各种各样的疑虑,除非山贼式好好法,每个的业务都占有自己的微电脑资源,这从前头有很多很多颇具关键技术挑战的什么事。

无论如何,在这一块还是相当利于积累经验,对于es的洞察和孕育也相当快速,在查疑虑的反复当中,对于跟踪引擎的使用和洞察但会孕育的相当快速。不仅如此,很多时候,我们用心地注意到生产的疑虑,年中的跟踪,一定但会有所收获。大家遇上生产疑虑的时候,日后三不要杀掉任何技术细节,这个就是你收获的时候,比你写100言道的CRUD更加有优点。

作者丨任实乃

来源丨公众号:哈啰关键技术(ID:gh_426073316492)

dbaplus小团体赞许广大关键技术人员出书,出书电话号码:editor@dbaplus.cn

更加多精彩内容

dbaplus小团体下期录播【时下赛跑丨尘原生下的SRE生命体之路】将于今晚20点季于,dbaplus小团体推荐到浙江移动 SRE架构师-史军艇、哔哩哔哩虚拟化部 SRE体系负责人-刘昊在时则汇聚,希望通过汇集两位SRE专业人士的研究成果和学术性,给大家在尘原生的SRE生命体之一路上,备有独有和新奇。复制下方链接到网易,可以用小计算机系统参观者哦~

录播地址:

填充录播顾问网易(dbafeifei),还可获得转到SRE隐喻交流群等更加多社会保险哦~

关于我们

dbaplus小团体是错综复杂Database、BigData、AIOps的企业级专业小团体。资深大咖、关键技术鲜肉,每天珍品原创篇文章接入,每周线上关键技术分享,每月首期关键技术沙龙,每季度GdevopsBrownDAMS餐饮业大但会。

追捧公众号【dbaplus小团体】,利用更加多原创关键技术篇文章和梁汉文机器完整版

汉中白癜风医院挂号咨询
上海看白癜风哪家专科医院好
长沙看牛皮癣哪个医院比较好
甘肃包皮过长治疗医院
北京看妇科哪个医院最好

上一篇: 用勤哲Excel服务器软件获取企业微信打卡图表

下一篇: 银行“取款功能”被替代?6月起,已适用多数ATM机!储户取款提醒

友情链接