前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES面试题,看这一篇就够了

ES面试题,看这一篇就够了

作者头像
用户4283147
发布2022-10-27 14:38:10
2K0
发布2022-10-27 14:38:10
举报
文章被收录于专栏:对线JAVA面试对线JAVA面试

ES有哪些角色的节点,各自作用?

master node: 索引的创建与删除、

data node:存储索引数据、对文档数据增删查改

cordinate node:协调节点,接收用户请求、转发请求、汇总结果

ingest node:拦截请求,对文档进行转换和预处理

ES写入数据流程?

(1)客户端发送写请求给cordinate node

(2)cordinate node 计算路由计算,转发到对应的主分片所在的节点上

(3)主分片节点处理请求,并将数据同步至副本分片节点

(4)当所有节点写完数据后,cordinate node 返回相应给客户端

ES基于doc id读取数据流程?

(1)客户端发送请求给cordinate node

(2)cordinate node 计算路由,使用round-robin方式将请求转发到对应node的主分片或副本分片节点上

(3)接受请求的node 将查询的document返回给cordinate node

(4)cordinate node 将document返回给客户端

ES 搜索流程?

以query_then_fetch搜索方式为例:

(1)客户端发送请求给cordinate node

(2)cordinate node将请求转发给所有的shard对应的主分片或副分片之一

(3)query 阶段:每个shard 将自己的搜索结果返回给cordinate node,由cordinate node进行数据的合并、排序、分页等操作,产出最终结果

(4)fetch phase:接着由协调节点根据 doc id 去各个节点上拉取实际的 document 数据,最终返回给客户端

ES有哪几种数据缓存?

ES有以下三种数据缓存:

(1)Node Query Cache(queryCache)

Node级别的缓存,基于LRU策略,filter查询会使用query cache,相关调整参数为:

index.queries.cache.enabled:false

indices.queries.cache.size:10%(默认)

(2)Shard Rquest Cache(requestCache)

主要缓存aggregations、hits.total和suggestions等查询size=0的请求结果,基于LRU策略

request cache缓存分片级本地结果集,request cache在每次refresh_interval后就会被清空,所以其生命周期是一个refresh_interval。

(3)Fielddata Cache(fielddata)

主要用于sort以及aggs的字段。这会把字段的值加载到内存中,以便于快速访问。field data cache的构建非常昂贵,因此最好能分配足够的内存以保障它能长时间处于被加载的状态。调整参数:

indices.fielddata.cache.size

ES常用的查询有哪些?

(1)term、match、multi_match

(2)组合查询:bool(must、should、must_not、filter)、boost(加权)、constant(固定分值)、dis_max(单字符多字段组合)、function(函数脚本组合)

(3)wildcard(通配符查询)、fuzzy(模糊查询)、regexp(正则查询)

(4)match phrase(短语匹配查询)、match phrase prefix(短语前缀查询)

ES索引优化有哪些?

机器:使用SSD磁盘

OS:禁止swapping交换内存、给filesystem cache更多的内存

JVM:考虑使用G1,设置-Xms 与-Xmx参数相同

ES:

(1)增加refresh时间间隔,调整参数:index.refresh_interval

(2)临时关闭副本(replia)

(3)尽量使用es自动生成的id,如果自己指定id,写入前需要查看该id是否存在

应用程序:

(1)使用多线程、bulk批量写入

(2)增加写入缓存,调整参数:indices.memory.index_buffer_size(Node上所有的shard共享)

ES查询优化有哪些?

(1)尽量使用filter过滤器(filter不进行打分、可以缓存数据)

(2)分页查询,不能太深,考虑使用scroll

(3)mapping合理设计

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 对线JAVA面试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档