ElasticSearch使用规范

ElasticSearch使⽤规范
之前⼀直都在使⽤,但是没有注意过这些规范,
最近⼀年多开始“搞”ES(ElasticSearch),遇到了很多“坑”,希望和⼤家也⼀起分享下,由于接触时间不长,如有问题⿇烦联系我及时指出。
领衬ElasticSearch除了在⽇志场景(监控、数据分析、debug)等场景⼤量使⽤以外,最近⼀年多在很多核⼼上的线上业务(譬如电商业务)⼤量使⽤,⽬前接近了5000个节点,⽬前在db-ranking(2020-11-24⽇),ElasticSearch在search-engine中常年第⼀:
液压静力压桩机
对于MySQL、Redis这类存储缓存许多开发同学多有很强的最佳实践,但对于ElasticSearch的使⽤经验相对模式。我个⼈经验是ElasticSearch⾮常便于开发(譬如⽀持dynamic mapping)但它相对脆弱:⼀⽅⾯是开发同学对于其重视程度不够(譬如没有⾃⼰制定mapping)、另⼀⽅⾯它本⾝的⼀些设计(例如聚合计算都在JVM完成)导致其相对脆弱。
为此我们提供⼀份关于ElasticSearch的开发规范帮助ElasticSearch使⽤者减少⼀些可能碰到的坑
⼀、容量规划
1.  分⽚(shard)容量
⾮⽇志型(搜索型、线上业务型)的shard容量在10~30GB(建议在10G)
tmdi-30⽇志型的shard容量在30~100GB(建议30G)
单个shard的⽂档个数不能超过21亿左右(Integer.MAX_VALUE - 128)
注:⼀个shard就是⼀个lucene分⽚,ES底层基于lucene实现。
2. 索引(index)数量
kumool⼤索引需要拆分:增强性能,风险分散。
反例:⼀个10T的索引,例如按date查询、name查询钢板切割
正例:index_name拆成多个index_name_${date}
正例:index_name按hash拆分index_name_{1,2,3,...100..}
提⽰:索引和shard数并不是越多越好,对于批量读写都会有性能下降,所以要综合考虑性能和容量规划,同时配合压⼒测试,不存在真正的最优解。
3. 节点、分⽚、索引
扫地机器人方案
⼀个节点管理的shard数不要超过200个
4. ⽰意图
(1) 集
(2) 节点:
(3) 索引:
(4) 分⽚(shard)
⼆、索引mapping设计
⼤原则:不⽤默认配置和动态mapping、数据⽤途(类型、分词、存储、排序)弄清,下⾯是⼀个标准mapping:
1.  shard个数(number_of_shards):参考⼀
2.  refresh频率(refresh_interval):

本文发布于:2024-09-21 00:37:00,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/120648.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:性能   譬如   容量
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议