Java最新突击面试笔记总结—ElasticSearch面试内容

搜索引擎面试题

题目和解答来自于中华石杉和自己整理总结而得,希望能够有所帮助。
搜索引擎主要考察ElasticSearch 以及对应底层的Lucene技术。
主要面试题集中于:

  1. es分布式架构原理
  2. es的插入与查询
  3. es在数据量很大的情况下如何提高性能
  4. es在生产集群的部署架构是什么,每个索引有多大的数据量,每个索引有多少分片

1. es分布式架构原理

首先需要明白es是如何存储数据的,es把对应的数据转换为index。基于倒排索引的方式,每个index上存储了多个type类型,每个type对应一个document。而一个index会被分成多个shard(默认是5个)。
在分布式部署时,每个shard会被复制,即一个shard有primary和replica 每个es进程存储的是不同shard的primary和replica。es集群多个节点,会自动选举一个节点为master节点,这个master节点其实就是干一些管理的工作的,比如维护索引元数据拉,负责切换primary shard和replica shard身份拉,之类的。


3cWgYV.png

2. es的数据写入与读取

2.1 es数据的写入

2.1.1 es数据的写入过程

注意,客户端是可以在任意节点进行写入数据的,与Kakfa不同。
1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)
2)coordinating node,对document进行路由得到对应应该存储到哪个shard,将请求转发给对应的node(有primary shard)
3)实际的node上的primary shard处理请求,然后将数据同步到replica node
4)coordinating node,如果发现primary node和所有replica node都搞定之后,就返回响应结果给客户端


3cWXlD.png

2.1.2 es数据的写入原理

es数据写入原理主要可以分为4个操作:

  1. refresh
  2. commit
  3. flush
  4. merge
操作触发条件 操作过程
refresh 1. 每隔1s进行一次refresh操作
2. buffer已满,则进行一次refresh操作
1. buffer将数据写入segment file
2. 清空buffer
commit 1. 每隔30分钟执行一次translog
2. translog日志已满
1. 会主动进行一次refresh操作,把buffer中的数据写入到segment file
2. 生成一个 commit point 文件标识此次操作一件把buffer数据执行到了哪一个segment文件
3. 执行flush操作
flush commit操作中 1. 把file system上的文件全部强制fsync(持久化)到磁盘
2. 清空translog文件
3. 生成一个新的translog文件
merge 后台检查 1. 将多个segment文件合并为一个文件,并把.del文件删除
2. commit log 更新标识目前的segment
3. 打开segmentfile 到file cache 以供快速搜索
4. 删除旧的segment file
3chLse.png

2.2 es数据的读取

2.2.1 读取数据

使用RestFul API向对应的node发送查询请求,根据did来判断在哪个shard上,返回的是primary和replica的node节点集合
这样会负载均衡地把查询发送到对应节点,之后对应节点接收到请求,将document数据返回协调节点,协调节点把document返回给客户端


3cI6RP.png

2.2.2 全文检索

(1) 客户端使用RestFul API向对应的node发送查询请求
(2)协调节点将请求转发到所有节点(primary或者replica)所有节点将对应的数据查询之后返回对应的doc id 返回给协调节点
(3)协调节点将doc进行排序聚合
(4) 协调节点再根据doc id 把查询请求发送到对应shard的node,返回document

3 es在数据量很大的情况下如何提高性能

3.1 filesystem

es每次走fileSystem cache查询速度是最快的
所以将每个查询的数据50% 容量
= fileSystem cache 容量。

3.2 数据预热

数据预热是指,每隔一段时间,将热数据
手动在后台查询一遍,将热数据刷新到fileSystem cache上

3.3 冷热分离

类似于MySQL的分表分库
将热数据单独建立一个索引 分配3台机器只保持热机器的索引
另外的机器保持冷数据的索引,但有一个问题,就是事先必须知道哪些是热数据 哪些是冷数据

3.4. document设计

在使用es时 避免使用复杂的查询语句(Join 、聚合),就是在建立索引时,
就根据查询语句建立好对应的元数据。

3.5 实际设计

采用elasticSearch + Hbase的架构方式。es中只存放少量关键数据建立索引,通过es查询到doc id 再去Hbase中查询完整的数据信息。

4 es在生产集群的部署架构是什么,每个索引有多大的数据量,每个索引有多少分片

生产环境部署情况
(1)es生产集群我们部署了5台机器,每台机器是6核64G的,集群总内存是320G
(2)我们es集群的日增量数据大概是2000万条,每天日增量数据大概是500MB,
每月增量数据大概是6亿,15G。目前系统已经运行了几个月,现在es集群里数据总量大概是100G左右。
(3)目前线上有5个索引(这个结合你们自己业务来,看看自己有哪些数据可以放es的),
每个索引的数据量大概是20G,所以这个数据量之内,我们每个索引分配的是8个shard,比默认的5个shard多了3个shard。

更多原创内容欢迎关注:
公众号:木对林三的成长
v❤:lh18708107810

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容