当前位置: 首页 > news >正文

elasticSearch常见的面试题

常见的面试问题

描述使用场景

es集群架构3个节点,根据不同的服务创建不同的索引,根据日期和环境,平均每天递增60*2,大约60Gb的数据。

调优技巧

原文参考:干货 | BAT等一线大厂 Elasticsearch面试题解读 - 掘金

设计阶段的调优

  1. 根据业务增长的需求,采取日期模版创建索引,通过roll over API实现滚动索引

定义条件,生成新的索引,但都指向一个别名

https://juejin.cn/post/6959744054905012231

  1. 根据别名对索引进行管理

  2. 凌晨对索引进行force_merge操作,释放空间

合并Lucene索引在每个分片中保存的分段数,强制合并减少分片中的分段数量

https://blog.csdn.net/weixin_43820556/article/details/122986027

  1. 冷热分离机制,热数据放在SSD,冷数据定期shrink操作,缩减存储

删除副本,只读索引,减少主分片的数量

https://blog.csdn.net/UbuntuTouch/article/details/109004225

  1. 使用curator进行索引的生命周期管理

对索引和快照进行管理,配置规则,定时任务调用

https://cloud.tencent.com/developer/article/1382110

  1. 仅针对需要分词的字段,选用合适的分词器

  2. Mapping阶段充分结合各个字段的属性,是否要检索、存储

写入调优

  1. 写入前refresh_interval=-1

默认情况下索引的refresh_interval为1秒,这意味着数据写1秒后就可以被搜索到,每次索引的 refresh 会产生一个新的 lucene 段,这会导致频繁的 segment merge 行为,如果你不需要这么高的搜索实时性,应该降低索引refresh 周期

  1. 采用bulk批量写入

  2. 使用自动生成的id

写入 doc 时如果是外部指定了 id,es 会先尝试读取原来doc的版本号, 判断是否需要更新,使用自动生成 doc id 可以避免这个环节

查询调优

  1. 禁用批量terms(分页)
  2. 数据量大时,先基于时间范围检索
  3. 充分利用倒排索引机制,keyword查询
  4. 合理的路由机制

索引数据多的调优和部署

动态索引

基于模板+时间+rollover api 滚动创建索引

存储层面

冷热数据分离存储,冷数据force_merge+shrink压缩

部署层面

合理的前期规划,动态增加节点缓解集群压力

master选举机制

基本前提

  1. 候选主节点才能成为主节点
  2. 最小主节点数防止脑裂
选举流程

索引文档流程

在这里插入图片描述

文档获取分片

文档id计算目标分片id

shard = hash(_routing) % (num_of_primary_shards)
http://www.lryc.cn/news/111447.html

相关文章:

  • 第一课-前提-Stable Diffusion 教程
  • Python 开发工具 Pycharm —— 使用技巧Lv.2
  • 代码随想录第39天 | 62. 不同路径、63.不同路径II
  • QMT入门—初识QMT
  • C 语言的 return 语句
  • 企业级Vue路由角色权限应该怎么做?
  • 3.2.0 版本预告!Apache DolphinScheduler API 增强相关功能
  • 测试工程师的工作
  • 压力测试与测试工具jmeter的介绍
  • 解析整型最大值(Integer.MIN_VALUE)溢出变为最小值(Integer.MAX_VALUE)
  • 【openpcdet】dbinfo内的信息
  • clickhouse查询缓存
  • vue中使用Base64加密、解密以及des加密、解密
  • 关于丢失安卓秘钥的撞sha-1值的办法
  • maven如何打包你会吗?
  • idea 控制台 打印 Tomcat日志Tomcat Catalina Log控制台乱码问题
  • python我的世界
  • SpringBoot+vue 大文件分片下载
  • scanf函数读取数据 清空缓冲区
  • js 文件常用转换
  • 基于Open3D的点云处理15-特征点
  • 算法刷题Day 58 每日温度+下一个更大元素I
  • 认识 spring AOP (面向切面编程) - springboot
  • 将css文件中的px转化为rem
  • JNI之Java实现远程打印
  • YOLOv5基础知识入门(2)— YOLOv5核心基础知识讲解
  • 免费的scrum敏捷开发管理工具
  • Hive创建外部表详细步骤
  • leetcode 452. 用最少数量的箭引爆气球
  • Pytorch Tutorial【Chapter 3. Simple Neural Network】