elasticsearch面试题

elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。

如: ES 集群架构 13 个节点,索引根据通道不同共 20+索引,根据日期,每日递增 20+,索引:10分片,每日递增 1 亿+数据,每个通道每天索引大小控制:150GB 之内。

目前es集群共有10个节点(3个网关节点,3个主节点,4个数据节点), 目前索引共14个,每日递增数据越50w。

倒排索引

每个文档对应一个文档ID,内容是关键词的集合。
如:文档1经过分词,提取了20个关键字每个关键字都会在文档中出现的次数和位置,倒排索引就是关键词 —-> ID 的映射。

倒排索引的结构

B-Tree
叶子节点记录ID的位置,和MySQL中的MyISAM相似。

ES的写数据过程

  • 客户端选择node(协调节点)发送
  • 协调节点对doc进行路由转发给对应的node(主分片)
  • 实际的node对primary shard 处理请求数据进行同步。
  • 协调节点发现primary shard 和replice node 完成,然后返回结果。

ES

  • 将数据写入内存缓存区
  • 将数据写入tranlog缓存区
  • 每个1s从 buffer的refresh 到file system cache 中 生成segment文件,一旦文件生成则可以通过索引查询到。
  • refresh完成buffer清空。
  • 每隔5s tranlog 从buffer flush 到磁盘中。
  • 定期、定量从 file system cache 中结合tranlog 内容 flush index 到磁盘中。

ES 读取数据过程

  • 根据id 判断路由转发对应的node。
  • 在primary shard 以及所有的replica中随机选取一个请求进行负载。
  • 请求node 返回给协调节点
  • 协调节点返回doc给客户端。

ES 搜索过程。

  • 协调节点,将请求转发给所有的shard 对应的primary shard 或者replica shard
  • query phease 每个shard 将自己的结果(id集合)返回给协调节点。
  • 由协调节点进行数据合并,排序,分页。
  • fetch phase 有协调节点根据id去拉取doc返回客户端。

文章作者: 凌云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 凌云 !
  目录