首页 > 其他分享 >elasticSearch常见的面试题

elasticSearch常见的面试题

时间:2023-08-19 17:02:36浏览次数:38  
标签:面试题 merge 常见 写入 refresh 索引 调优 elasticSearch 节点

常见的面试问题

描述使用场景

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

调优技巧

设计阶段的调优

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

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

根据别名对索引进行管理

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

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

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

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

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

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

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

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

写入调优

写入前refresh_interval=-1

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

采用bulk批量写入

使用自动生成的id

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

查询调优

禁用批量terms(分页)

数据量大时,先基于时间范围检索

充分利用倒排索引机制,keyword查询

合理的路由机制

索引数据多的调优和部署

动态索引

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

存储层面

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

部署层面

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

master选举机制

基本前提

候选主节点才能成为主节点

最小主节点数防止脑裂

选举流程

elasticSearch常见的面试题_调优

索引文档流程

elasticSearch常见的面试题_自动生成_02

标签:面试题,merge,常见,写入,refresh,索引,调优,elasticSearch,节点
From: https://blog.51cto.com/u_16039020/7150640

相关文章

  • clickhouse数据操常见执行语句
    1.清空本地表数据truncatetable数据库名.表名:)select*fromtest_local;SELECT*FROMtest_localQueryid:ab13b5ad-4fa5-4cff-b581-8b361fa50656┌─id─┬─name──────┐│1│zhangsan││2│lisi││7│yw││8......
  • python 面试题第一弹
    1.如何理解Python中的深浅拷贝浅拷贝(ShallowCopy)创建一个新的对象,该对象的内容是原始对象的引用。这意味着新对象与原始对象共享相同的内存地址,因此对于可变对象来说,如果修改了其中一个对象,另一个对象也会受到影响。浅拷贝通常使用copy模块的copy()函数或者对象的copy()方法来......
  • 常见数学式子
    (持续更新ing...)式子没啥可说的,直接列式子吧(证明都在最下面):\(1.\displaystyle\sum_{i=1}^ni^2=\frac{n(n+1)(2n+1)}{6}\)\(2.\displaystyle\sum_{1\lei<j\len}(i+j)=\frac{n(n-1)(n+1)}{2}\)\(3.\displaystyle\sum_{1\lei\lej\len......
  • vue3常见的难点
    vue中params和query的区别,以及具体用法:https://blog.csdn.net/weixin_42282727/article/details/107505014route、router区别:https://blog.csdn.net/m0_67948827/article/details/127051410......
  • JavaScript中常见的数据结构和算法及其应用场景简介
    在JavaScript编程中,数据结构和算法是必不可少的组成部分。本文将介绍JavaScript中常见的数据结构和算法以及它们的应用场景。数据结构数组数组是JavaScript中最常见的数据结构之一。它是一种有序的集合,可以存储任意类型的数据。由于数组支持快速随机访问,因此它非常适合用于存......
  • 2023年Android中高级最全面试题(含大厂原题+解析)
    前言又快要到了一年一度的金九银十黄金跳槽时节,也是互联网大厂疯狂招人的时期,现在应该有很多Android程序员已经按耐不住了。但是现在网上的面试题资料太多了,而且有些面试题已经过时甚至是漏洞百出。今天结合自己前段时间的面试经历和几位大厂大佬交流讨论总结出这份2023年Android中......
  • RAM、ROM、SRAM、DRAM、FLASH等常见存储器学习记录
    存储器按照掉电失去数据分为两类:易失性和非易失性。RAM:随机存取存储器(英语:RandomAccessMemory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个......
  • 分布式存储系统举例剖析(elasticsearch,kafka,redis-cluster)
    1.概述对于分布式系统,人们首先对现实中的分布式系统进行高层抽象,然后做出各种假设,发展了诸如CAP,FLP等理论,提出了很多一致性模型,Paxos是其中最璀璨的明珠。我们对分布式系统的时序,复制模式,一致性等基础理论特别关注。在共识算法的基础上衍生了选举算法,并且为分布式事务提供......
  • 第二十节 API(常见API,对象克隆)
    课程目标能够熟练使用Math类中的常见方法能够熟练使用System类中的常见方法能够理解Object类的常见方法作用能够熟练使用Objects类的常见方法能够熟练使用BigInteger类的常见方法能够熟练使用BigDecimal类的常见方法1Math类1.1概述tips:了解内容查看API文档,我们可以......
  • 常见反汇编技术
    一.相同目标的跳转指令当jz与jnz的目地地址相同时,此时相当于jmp,但是IDA会将jnz后面的指令(实际上不会执行的指令)进行反汇编,这个时候如果加上比如call(E8),jmp(E9)等字节指令,那么势必会导致反汇编出现问题。这个时候我们需要将jnz后面的代码转化为数据,然后使正常跳转的位置转化为代......