前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elasticsearch 开发运维实战核心 Tips

Elasticsearch 开发运维实战核心 Tips

作者头像
铭毅天下
发布2020-05-18 23:36:25
5560
发布2020-05-18 23:36:25
举报
文章被收录于专栏:铭毅天下铭毅天下

Elasticsearch基础但非常重要的功能还有哪些? 0,有安全比裸奔重要! 1,模板template比mapping重要。 2,显式映射 strict mapping比隐式mapping重要! 3,别名重要! 4,结合业务选择甚至自定义分词器比使用默认重要!

1、集群规划层面

  • 注意评估节点的硬盘空间。
  • 结合esrally等第三方工具评估集群资源的写入、检索的吞吐率等指标。
  • 合理配置每个索引的分片数。

2、数据预处理层面

  • 数据进 Elasticsearch 前要做清洗。
  • Elasticsearch 擅长的是检索和不复杂的聚合,其他活给关系型数据库或者第三方大数据开源库如:clickhouse 等。

3、数据建模层面

  • 比起严格模式,我更喜欢动态mapping,通过字段名字的前缀映射类型,自从用了这套规则,字段冲突导致的kibana无法作报表的问题一扫而光啊,真的是不要太香了 。
  • 是否需要打分,是否需要排序、聚合、过滤,如果不需要则(doc_values(dvm、dvd) norm(nvd、nvm))属性需要关闭等等。
  • 模板 template 比 mapping 更灵活,推荐结合别名多使用动态模板,尤其数据量每日增量巨大的业务场景。
  • 字段非常明确固定、且未来不会新增字段,考虑mapping创建时设置:"dynamic": "strict", 以严格控制Mapping泛滥。
  • 结合业务选择分词器甚至自定义分词器。

4、检索层面

  • 如果需要考虑查询速度的优化,且排序字段基本固定,则可以考虑把 indexSort 配上,查询时会提前中断。

indexSort能通过预排序有效避免全局扫描,提前中断查询,提升查询性能,对于查询时按照某列排序(注意不适合相关性排序)的场景非常适合。

  • 查询根据业务实际考虑,建议最好把 Wildcard 模糊查询、*.*等会导致数据量大的查询做限制。
  • 限制limit +offset,限制query_string等文本查询的长度,限制term长度,随时关注慢查询日志。es是很强大,但是取决你怎么使用,你永远不知道会怎么调你的接口…

5、硬件资源层面

5.1 磁盘层面

  • 磁盘大小是否充足,压缩格式使用默认speed Compression? 还是 Best Compression?

5.2 内存层面

  • 采用默认NIOFS 还是MMAP,采用MMAP哪些需要预缓存到堆外。

6、集群管理层面

  • 记得配置延时分片 index.unassigned.node_left.delayed_timeout。
  • refresh、flush时间根据的实际业务需求调整。
  • 对集群的性能监控越全面越好, 及时发现慢查询,尽可能全面的根据业务评估使用量, 并能在瓶颈期发现和升级配置。
  • 多节点集群,合理划分节点角色,尤其要分离:主节点、数据节点、协调节点。

7、安全及灾备层面

  • 禁用批量删除索引比默认的随意删除重要。
  • 定期或者增量备份比无备份重要(条件允许的情况下)。
  • 安全问题是必须的,我们是在日志清晰的时候做的核心字段加密,elk 整个技术栈都只允许内网访问,对外的服务接口也是要软 token 的。
  • 将 ES 提供给业务研发去使用,更多的是需要考虑控制权限,降低门槛,最好是封装一层网管提供给业务研发使用,然后再去多分享培训,提高业务侧研发对ES的认知。

8、性能优化层面

  • 关闭系统swap。
  • 如果数据量大,尽可能使用bulk 批量操作。

(1)写入层面bulk操作,包含但不限于:bulk API 执行批量写入、更新、删除多文档操作。

(2)检索层面bulk操作,包含但不限于:Multi Get(mget), Scorll, MultiSearch。

  • 建议根据业务需求较早的设置开启慢查询日志。
  • 堆内存大小不要超过32GB。
  • 使用script 脚本时,要考虑可能带来的慢、安全风险(早期版本)等负面影响。
  • 在一定条件下,执行强制合并segment,查询速度会提升很多。

9、小结

从各个层面列举了大家实战中关心且常忽视的Tips,不求全,但求有用。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 铭毅天下Elasticsearch 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、集群规划层面
  • 2、数据预处理层面
  • 3、数据建模层面
  • 4、检索层面
  • 5、硬件资源层面
    • 5.1 磁盘层面
      • 5.2 内存层面
      • 6、集群管理层面
      • 7、安全及灾备层面
      • 8、性能优化层面
      • 9、小结
      相关产品与服务
      Elasticsearch Service
      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档