Elasticsearch 开发运维实战核心 Tips

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: Elasticsearch基础但非常重要的功能还有哪些?0,有安全比裸奔重要!1,模板template比mapping重要。2,显式映射 strict mapping比隐式mapping重要!3,别名重要!4,结合业务选择甚至自定义分词器比使用默认重要!请留言写下您的思考。https://t.zsxq.com/MrjQrfM

有20多人参与,大家把自己架构、开发、运维实战中遇到的核心问题和建议都一股脑写出来了。


我做了扩展梳理,相信对架构、开发、运维都有一定的帮助!


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,不求全,但求有用。


因为 Tips 涉及内容多,没有各个点展开。更多细节欢迎留言交流。


大家有实战中更好的Tips,也欢迎留言交流一下。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
2月前
|
运维 应用服务中间件 持续交付
自动化运维的利器:Ansible实战应用
【9月更文挑战第33天】本文将带你深入理解Ansible,一个强大的自动化运维工具。我们将从基础概念开始,逐步探索其配置管理、任务调度等功能,并通过实际案例演示其在自动化部署和批量操作中的应用。文章旨在通过浅显易懂的语言和实例,为读者揭开Ansible的神秘面纱,展示其在简化运维工作中的强大能力。
169 64
|
29天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
152 3
|
17天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
31 2
|
19天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
42 4
|
21天前
|
消息中间件 运维 UED
消息队列运维实战:攻克消息丢失、重复与积压难题
消息队列(MQ)作为分布式系统中的核心组件,承担着解耦、异步处理和流量削峰等功能。然而,在实际应用中,消息丢失、重复和积压等问题时有发生,严重影响系统的稳定性和数据的一致性。本文将深入探讨这些问题的成因及其解决方案,帮助您在运维过程中有效应对这些挑战。
24 1
|
2月前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
2月前
|
运维 Java Linux
【运维基础知识】掌握VI编辑器:提升你的Java开发效率
本文详细介绍了VI编辑器的常用命令,包括模式切换、文本编辑、搜索替换及退出操作,帮助Java开发者提高在Linux环境下的编码效率。掌握这些命令,将使你在开发过程中更加得心应手。
38 2
|
2月前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。
|
28天前
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
137 0
|
2月前
|
存储 运维 监控
实时计算Flink版在稳定性、性能、开发运维、安全能力等等跟其他引擎及自建Flink集群比较。
实时计算Flink版在稳定性、性能、开发运维和安全能力等方面表现出色。其自研的高性能状态存储引擎GeminiStateBackend显著提升了作业稳定性,状态管理优化使性能提升40%以上。核心性能较开源Flink提升2-3倍,资源利用率提高100%。提供一站式开发管理、自动化运维和丰富的监控告警功能,支持多语言开发和智能调优。安全方面,具备访问控制、高可用保障和全链路容错能力,确保企业级应用的安全与稳定。
47 0