面试题-Elasticsearch集群架构和调优手段(超全面)

对于Elasticsearch(ES),我了解并有经验。在我之前的公司,我们有一个相对大型的ES集群,以下是该集群的架构和一些调优手段的概述:
1. 集群架构

- 集群规模:我们的ES集群由15个节点组成,涵盖了数据节点和主节点。
- 索引数量:我们有30多个索引,根据不同的数据通道进行划分。每天根据日期递增创建新的索引,大约每天增加20个以上的索引。
- 分片数:每个索引有10个主分片,用于水平分布和并行处理数据。
- 数据大小:每个索引的大小受限制在150GB以内。
(根据实际的项目经验来说 如果没有就按照这个说就行,前提是你得理解技术细节 不然容易露馅)
2. 调优手段

2.1 设计阶段调优

- 基于日期模板创建索引:通过使用roll over API,我们按照日期模板创建新的索引,以便更好地管理和维护数据。
- 使用别名进行索引管理:通过别名来引用索引,而不是直接使用具体的索引名称,简化了索引切换和管理的过程。
- 定时force_merge操作:每天凌晨定时执行force_merge操作,以减少碎片并释放磁盘空间。
- 冷热分离机制:将热数据存储在SSD上,以提高检索效率,同时定期对冷数据进行shrink操作,以减少存储空间占用。
- 使用Curator进行索引的生命周期管理:通过Curator工具自动管理索引的创建、删除和归档等操作。
- 合理设置分词器:针对需要进行全文搜索的字段,选择合适的分词器以提高搜索质量和效率。
- 结合字段属性进行Mapping设置:在Mapping阶段,根据字段的需求和特性,设置是否需要检索、是否需要存储等属性。
2.2 写入调优

- 副本数设置为0:在写入数据之前暂时关闭副本,以提高写入性能。
- 关闭refresh_interval:在写入过程中,将refresh_interval设置为-1,禁用刷新机制,以减少刷新操作对写入性能的影响。
- 批量写入:使用bulk批量写入API,将多个文档一次性提交,减少频繁的网络开销和IO操作。
- 恢复副本数和刷新间隔:在写入完成后,恢复副本数和刷新间隔,以确保数据的可靠性和及时可见性。
- 自动生成ID:尽量使用ES自动生成的ID,避免额外的ID生成操作和性能消耗。
2.3 查询调优

-
禁用通配符查询:尽量避免使用通配符查询,因为它们会增加查询的复杂性和开销。
-
避免批量terms查询:对于包含大量terms的查询,尽量避免使用批量terms查询,以免影响查询性能。
-
合理使用keyword类型:尽可能将字段设置为keyword类型,充分利用倒排索引机制,提高查询效率。
-
基于时间范围进行索引选择:对于大量数据的情况,可以根据时间范围先确定索引,以减少需要搜索的索引数量。
-
设置合理的路由机制,在选择合理的路由机制时,可以考虑以下几个因素:

数据特点:根据数据的特点,选择适合的路由字段。例如,如果数据中包含地理位置信息,可以选择将地理位置作为路由字段,以便将具有相似地理位置的文档存储在相邻的分片上,提高查询效率。
查询需求:根据常见的查询需求,选择合适的路由策略。例如,如果经常根据时间范围进行查询,可以选择将时间作为路由字段,使具有相近时间的文档存储在相邻的分片上,以便快速定位需要查询的数据。
分片数量:考虑集群中的分片数量和规模,选择适当的路由策略。如果集群中的分片较少,可以使用哈希路由(默认路由策略),以确保数据均匀分布。如果集群中的分片较多,可以选择更具体的路由策略,以满足特定的查询需求。
理的路由策略,以实现数据的均衡分布和查询的优化。
2.4 其他调优

- 部署调优:优化硬件配置、网络拓扑和节点布局,以确保集群的性能和可靠性。
- 业务调优:根据具体业务需求和查询模式,优化查询DSL语句、索引设计和数据模型,以提高搜索效率和准确性。(偏向于具体的业务怎么设计)
相关文章:
面试题-Elasticsearch集群架构和调优手段(超全面)
对于Elasticsearch(ES),我了解并有经验。在我之前的公司,我们有一个相对大型的ES集群,以下是该集群的架构和一些调优手段的概述: 1. 集群架构 集群规模:我们的ES集群由15个节点组成,…...
python基础练习题6
1、找出10000以内能被5或6整除,但不能被两者同时整除的数(函数) def find_numbers(m,n):result []for num in range(m,n):if (num % 5 0 or num % 6 0) and not (num % 5 0 and num % 6 0):result.append(num)return resultprint(find_…...
Chrome 插件各模块使用 Fetch 进行接口请求
Chrome 插件各模块使用 Fetch 进行接口请求 常规网页可以使用 fetch() 或 XMLHttpRequest API 从远程服务器发送和接收数据,但受到同源政策的限制。 内容脚本会代表已注入内容脚本的网页源发起请求,因此内容脚本也受同源政策的约束,插件的来…...
内存可见性
内存可见性 一:内存可见性1.2: 二:解决内存可见性问题2.1 volatile关键字2.2:synchronized关键字解决内存可见性问题 一:内存可见性 public class Demo1 {public static int count 0;public static void main(String[] args) throws InterruptedException {Thread t1new Thre…...
Android room 在dao中不能使用挂起suspend 否则会报错
错误: Type of the parameter must be a class annotated with Entity or a collection/array of it. kotlin.coroutines.Continuation<? super kotlin.Unit> $completion); 首先大家检查一下几个点 一、kotlin-kapt 二、 是否引入了 room-ktx 我是2024年…...
【stable diffusion扩散模型】一篇文章讲透
目录 一、引言 二、Stable Diffusion的基本原理 1 扩散模型 2 Stable Diffusion模型架构 3 训练过程与算法细节 三、Stable Diffusion的应用领域 1 图像生成与艺术创作 2 图像补全与修复 3 其他领域 四、Stable Diffusion的优势与挑战 👉优势 …...
数据链路层之信道:数字通信的桥梁与守护者
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
SQL109 纠错4(组合查询,order by..)
SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state MI UNION SELECT cust_name, cust_contact, cust_email FROM Customers WHERE cust_state IL ORDER BY cust_name;order by子句,必须位于最后一条select语句之后...
Spring Boot + Vue 实现文件导入导出功能
文章目录 1、概述2、后端实现(Spring Boot)3、前端实现(Vue)4、总结 1、概述 在现代Web应用开发中,文件的导入导出是一个常见的需求。Spring Boot作为后端开发的强大框架,搭配前端框架Vue,可…...
vue watch 深度监听
vue2文档:API — Vue.js vue3文档:侦听器 | Vue.js watch 可以用来监听页面中的数据,但如果监听的源是对象或数组,则使用深度监听,强制深度遍历源,以便在深度变更时触发回调。 一,监听 <t…...
Qt源码调试步骤记录
1.源码: 两种方式,要么安装qt时选择source,要么从官网下载源码,然后在qt creator中设置路径。二选一即可。我选的第二种。 1.1.第一种,安装时选择source: 1.2.第二种,下载源码设置路径&#x…...
大数据面试英文自我介绍参考(万字长文)
发现有一个怪圈,如果码农年龄35+,除非非常匹配,不然在国内企业筛选可能就筛选不过。国外码农可以干到40+、50+。一些外企,对年龄35+的码农依然青睐。这些外企对英文是有要求,通常是要英文自我介绍,下面提供一些英文自我介绍参考。 参考1: Good morning/afternoon, I a…...
外包干了5天,技术退步明显.......
先说一下自己的情况,大专生,18年通过校招进入杭州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…...
Docket常见的软件部署1
1 安装MySQL # 查看MySQL镜像 docker search mysql # 拉起镜像 docker pull mysql:5.7 # 创建MySQL数据映射卷,防止数据不丢失 mkdir -p /hmoe/tem/docker/mysql/data/ # 启动镜像 docker run -d --name mysql -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -v /home…...
Qt源程序编译及错误问题解决
Error 5 while parsing C:/qt-everywhere-src-6.6.2/qt-build/qtdeclarative/src/qmlmodels/meta_types/qt6qmlmodels_release_metatypes.json: illegal value .json 文件为空文件0字节,加 “[]”,不要引号。可以解决这类错误。 Qt编译 Qt for Windows…...
作业练习(python)
第一题: cel eval(input()) fah 9 / 5 * cel 32 print("%.1f" % fah) 第二题: radius, length eval(input()) area radius * radius * 3.14159267 volume area * length print("%.2f" % area) print("%.2f" …...
Wireshark使用相关
1.wireshark如何查看RST包 tcp.flags.reset1 RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送R…...
相机标定学习记录
相机标定是计算机视觉和机器视觉领域中的一项基本技术,它的主要目的是通过获取相机的内部参数(内参)和外部参数(外参),以及镜头畸变参数,建立起现实世界中的点与相机成像平面上对应像素点之间准…...
CSS 滚动条样式修改
1、滚动条整体部分 使用 ::-webkit-scrollbar 注意:这个必须要加,不然修改的样式不生效 ::-webkit-scrollbar {width: 10px;//修改滚动条宽度 }2、滚动条中的滑块 使用 ::-webkit-scrollbar-thumb ::-webkit-scrollbar-thumb {border-radius: 8px;b…...
谈谈配置中心?
配置中心可以做集中式的服务配置管理,比如配置一些数据库连接的URL,一些共用的配置且可动态调整的参数。如果不采用集中式的管理,会导致修改起来特别麻烦,一个个的修改特别繁琐。 Nacos Config配置中心中采用的是客户端拉取数据&a…...
积分、微分、指数和对数运算放大电路基础知识及Multisim电路仿真
目录 2.5 积分运算放大电路 2.5.1 积分运算放大电路基础知识 一、电路结构 二、核心原理与公式 三、关键特性 四、典型应用场景 2.5.2 积分运算放大电路Multisim电路仿真 2.5.2.1 输入方波 2.5.2.2 输入三角波 2.5.2.3 输入正弦波 2.6 微分运算放大电路 2.6.1 微分…...
AI-Native数据分析:43 次工具调用,蒸馏成 1 张可复用的知识卡片
很多人最近都在聊 AI-native 工作流, 也在聊"蒸馏"自己的知识库. 但聊得多, 真正落地的人少 —— 因为大家手里的 AI 工具大多停留在 "AI-enabled" 阶段: 一次性问答工具, 用完即弃, 每次重新对一遍口径.这篇文章想用一条真实的 InfiniSynapse 任务回放, 把…...
观察Taotoken用量看板如何帮助团队透明化管理API成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken用量看板如何帮助团队透明化管理API成本 作为团队的技术负责人,管理大模型API成本是一项持续且细致的工作…...
工业视觉检测:从分类到检测的数据多样性策略对比与实战指南
1. 项目概述与核心问题在工业视觉检测领域,我们常常遇到一个令人头疼的“过拟合”现象:模型在实验室里用精心采集的样本训练,准确率能冲到99.9%,可一旦部署到产线上,面对光照变化、产品批次差异、背景干扰甚至相机抖动…...
实战配置指南:5个技巧让PlayStation手柄在Windows上发挥专业级性能
实战配置指南:5个技巧让PlayStation手柄在Windows上发挥专业级性能 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows DS4Windows是一款功能强大的开源控制器兼容工具,…...
别再微调模型了!Claude 3.5 Sonnet新增3类零样本指令模板:Prompt工程师的最后护城河正在崩塌?
更多请点击: https://intelliparadigm.com 第一章:Claude 3.5 Sonnet零样本指令能力的范式跃迁 Claude 3.5 Sonnet 在零样本(zero-shot)场景下展现出前所未有的指令理解与泛化能力,标志着大模型从“模式复现”向“意图…...
Diem存储协议终极指南:如何构建高性能分布式文件存储系统
Diem存储协议终极指南:如何构建高性能分布式文件存储系统 【免费下载链接】diem Diem’s mission is to build a trusted and innovative financial network that empowers people and businesses around the world. 项目地址: https://gitcode.com/gh_mirrors/di…...
PICAXE单片机驱动DS18B20温度传感器:从硬件连接到数据处理
1. 项目概述:用PICAXE玩转DS18B20数字温度传感器如果你手头有一块PICAXE单片机,想快速实现一个温度监测项目,那么DS18B20这颗数字温度传感器绝对是你的绝佳拍档。它只需要一根数据线就能和MCU通信,抗干扰能力强,还能通…...
2026年录音转换文字的软件推荐:从微信小程序到专业工具的实用对比
做视频或音频素材处理的时候,经常卡在这几个环节:转出来的文字有错别字需要反复核对、处理一个长视频得等半天、格式导出后没法直接用到其他软件。这些都是常见的痛点。本文会从实际应用出发,先重点讲一个相对高效的方案——微信小程序提词匠…...
终极飞书文档迁移方案:25分钟批量导出700+文档的完整指南
终极飞书文档迁移方案:25分钟批量导出700文档的完整指南 【免费下载链接】feishu-doc-export 飞书文档导出服务 项目地址: https://gitcode.com/gh_mirrors/fe/feishu-doc-export 你是否曾因公司办公软件切换或数据备份而面临飞书文档迁移的困境?…...
