文章目录

  • 1.ELK 是什么?
  • 2.ELK 能做什么?
  • 3.简要概述 Elasticsearch?
  • 4.Elasticsearch 主要特点
  • 5.ES 相关概念
  • 6.什么是分词器
  • 7.elasticsearch 的倒排索引是什么?
  • 8.Elasticsearch 是如何实现 Master 选举的?
  • 9.Elasticsearch 如何避免脑裂?
  • 10.详细描述一下 Elasticsearch 索引文档的过程
  • 11.请概述 Elasticsearch 搜索的过程?

前    言

本文仅收录了一些常见的ELK 面试题,如需查看其它java面试题可查看我另一篇博文:

JAVA | 2021最全Java面试题及答案汇总


正    文

1.ELK 是什么?

ELK 其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写
Elasticsearch:负责日志检索和储存
Logstash:负责日志的收集和分析、处理
Kibana:负责日志的可视化
这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,
故被简称为 ELK。加入 Beats 系列组件后,官方名称就变为了 Elastic Stack

2.ELK 能做什么?

ELK 组件在海量日志系统的运维中,可用于解决:
分布式日志数据集中式查询和管理、系统监控,包含系统硬件和应用各个组件的监控、
故障排查、安全信息和事件管理、报表功能等等

3.简要概述 Elasticsearch?

ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的
全文搜索引擎,基于 RESTful API 的 web 接口。
Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前
流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装
使用方便

4.Elasticsearch 主要特点

1.实时分析
2.分布式实时文件存储,并将每一个字段都编入索引
3.文档导向,所有的对象全部是文档
4.高可用性,易扩展,支持集群(Cluster)、分片和复制(Shards 和 Replicas)
接口友好,支持 JSON

5.ES 相关概念

Node: 装有一个 ES 服务器的节点。
Cluster: 有多个 Node 组成的集群
Document: 一个可被搜素的基础信息单元
Index: 拥有相似特征的文档的集合
Type: 一个索引中可以定义一种或多种类型
Filed: 是 ES 的最小单位,相当于数据的某一列
Shards: 索引的分片,每一个分片就是一个 Shard
Replicas: 索引的拷贝

6.什么是分词器

分词是将文本转换成一系列单词(Term or Token)的过程,也可以叫文本分析,在 ES
里面称为 Analysis
分词器是 ES 中专门处理分词的组件,英文为 Analyzer,它的组成如下:
Character Filters:针对原始文本进行处理,比如去除 html 标签
Tokenizer:将原始文本按照一定规则切分为单词
Token Filters:针对 Tokenizer 处理的单词进行再加工,比如转小写、删除或增新等
处理
ES 提供了一个可以测试分词的 API 接口,方便验证分词效果,endpoint 是_analyze
ES 也提供了很多内置的分析器。

7.elasticsearch 的倒排索引是什么?

正排索引是以文档的 ID 为关键字,表中记录文档中每个字的位置信息,查找时扫描表
中每个文档中字的信息直到找出所有包含查询关键字的文档。
而倒排索引,是通过分词策略,形成了词和文章的映射关系表,这种词典+映射表即为
倒排索引。
有了倒排索引,就能实现 o(1)时间复杂度的效率检索文章了,极大的提高了检索效
率。
所以总的来说,正排索引是从文档到关键字的映射(已知文档求关键字),倒排索引是
从关键字到文档的映射(已知关键字求文档)。

8.Elasticsearch 是如何实现 Master 选举的?

采用 Bully 算法,它假定所有节点都有一个唯一的 ID,使用该 ID 对节点进行排序。
Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节点之间通过这个 RPC
来发现彼此)和 Unicast(单播模块包含一个主机列表以控制哪些节点需要 ping 通)这两
部分;
对所有可以成为 master 的节点(node.master: true)根据 nodeId 字典排序,每次选
举每个节点都把自己所知道节点排一次序,然后选出第一个(第 0 位)节点,暂且认为它是
master 节点。
如果对某个节点的投票数达到一定的值(可以成为 master 节点数 n/2+1)并且该节点
自己也选举自己,那这个节点就是 master。否则重新选举一直到满足上述条件。
补充:master 节点的职责主要包括集群、节点和索引的管理,不负责文档级别的管理;
data 节点可以关闭 http 功能。
7.X 之后的 ES,采用一种新的选主算法,实际上是 Raft 的实现,但并非严格按照 Raft
论文实现,而是做了一些调整。Raft 是工程上使用较为广泛分布式共识协议,是多个节点
对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分区的情况下。

9.Elasticsearch 如何避免脑裂?

ES 集群中的节点(比如共 20 个),其中的 10 个选了一个 master,另外 10 个选了另一
个 master,怎么办?
当集群 master 候选数量不小于 3 个时,可以通过设置最少投票通过数量
(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题;
当候选数量为两个时,只能修改为唯一的一个 master 候选,其他作为 data 节点,避免
脑裂问题。
在 Elasticsearch 7.0 里重新设计并重建了的集群协调子系统,移除
minimum_master_nodes 参数,转而由集群自主控制。

10.详细描述一下 Elasticsearch 索引文档的过程

协调节点默认使用文档 ID 参与计算(也支持通过 routing),以便为路由提供合适的
分片。
shard = hash(document_id) % (num_of_primary_shards)
当分片所在的节点接收到来自协调节点的请求后,会将请求写入到 Memory Buffer,然
后定时(默认是每隔 1 秒)写入到 Filesystem Cache,这个从 Momery Buffer 到 Filesystem
Cache 的过程就叫做 refresh;
当然在某些情况下,存在 Momery Buffer 和 Filesystem Cache 的数据可能会丢失,ES
是通过 translog 的机制来保证数据的可靠性的。其实现机制是接收到请求后,同时也会写
入到 translog 中,当 Filesystem cache 中的数据写入到磁盘中时,才会清除掉,这个过程
叫做 flush; 在 flush 过程中,内存中的缓冲将被清除,内容被写入一个新段,段的 fsync 将创建一
个新的提交点,并将内容刷新到磁盘,旧的 translog 将被删除并开始一个新的 translog。
flush 触发的时机是定时触发(默认 30 分钟)或者 translog 变得太大(默认为 512M)
时;

11.请概述 Elasticsearch 搜索的过程?

搜索拆解为“query then fetch” 两个阶段。
query 阶段的目的:定位到位置,但不取。
步骤拆解如下:
1)假设一个索引数据有 5 主+1 副本 共 10 分片,一次请求会命中(主或者副本分片中)
的一个。
2)每个分片在本地进行查询,结果返回到本地有序的优先队列中。
3)第 2)步骤的结果发送到协调节点,协调节点产生一个全局的排序列表。
fetch 阶段的目的:取数据。
路由节点获取所有文档,返回给客户端。

ELK 面试题及答案相关推荐

  1. 110道 Elasticsearch面试题及答案(持续更新)

    最新Elasticsearch面试题[附答案解析]ES面试题及答案,ES最新面试题及答案,ES面试题新答案已经全部更新完了,有些答案是自己总结的,也有些答案是在网上搜集整理的.这些答案难免会存在一些错 ...

  2. SpringCloud面试题及答案 300道,springcloud面试题总结 (持续更新)

    SpringCloud面试题及答案(SpringCloud面试题大全带答案) 2021年面试题及答案[最新版]高级SpringCloud面试题大全,发现网上很多SpringCloud面试题及答案整理都 ...

  3. c语言程序设计试题及答案十,C语言程序设计试题试题及答案.doc

    <C语言程序设计试题试题及答案.doc>由会员分享,可在线阅读,更多相关<C语言程序设计试题试题及答案.doc(49页珍藏版)>请在装配图网上搜索. 1.C ,C+(120)1 ...

  4. 吉大c语言程序设计作业一,吉林大学历年C语言程序设计试题及答案.doc

    吉林大学历年C语言程序设计试题及答案 吉林大学历年C语言程序设计试题及答案(5)END 2000年试题答案 一.(1)解题思想: 用5个数 a,b,c,d,e,来回替换,最终f(n)算出. 设计程序如 ...

  5. java面试题2019 答案

    Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 Stri ...

  6. 计算机组成 试题,计算机组成典型试题及答案

    计算机组成典型试题及答案 计算机组成的任务是在指令集系统结构确定分配给硬件系统的功能和概念结构之后,研究各组成部分的内部构造和相互联系,那么计算机组成原理考试考什么呢?下面yjbys小编为大家分析计算 ...

  7. 21年最新Python面试题及答案汇总详解(上)

    错过三月找工作的机会,还要错过四月的好时期吗?Python面试你做准备了吗?下面小编整理了一套2021年最新Python常见面试题目,及Python面试题目答案汇总.希望能够帮助到大家. 21年最新P ...

  8. 计算机考试批处理试题,2015计算机三级考试pc技术模拟试题及答案(八)

    2015计算机三级考试pc技术模拟试题及答案(八) 1.关于Windows 98中的网上邻居的相关叙,( )是错误的. A.通过网上邻居可以游览和使用网上的全部计算机资源 B.通过网上邻居可以浏览网上 ...

  9. Java并发编程71道面试题及答案

    Java并发编程71道面试题及答案 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方 ...

最新文章

  1. [转]RDLC报表-参数传递及主从报表
  2. c++-虚函数与多态
  3. 心理学系列:《乌合之众》读书笔记
  4. 计算机工程学院运动会方阵口号,运动会方阵口号(精选多篇)
  5. hc06蓝牙模块介绍_微测评 | 小米智能插座蓝牙网关版
  6. 官宣,PyTorch 1.0 稳定版本现已推出
  7. 深度| 百度副总裁王海峰:百度在NLP领域都做了什么?
  8. vpay商城系统开发app
  9. 超级账本Fabric:Fabric-CA的使用演示(两个组织一个Orderer三个Peer)
  10. ES6数组得扩展与对象的扩展
  11. 远程桌面 连接栏不见无法退出
  12. MySQL如何配置环境
  13. SAP 生产订单/流程订单中日期的解释
  14. 使用STVP菜单乱码阴影很乱变坏等情况
  15. 【源码】ConvertTDMS (v10)——将LabView TDMS文件导入或转换到MATLAB工作区或mat文件
  16. 快速把数据转换成excel
  17. 【OpenCV-Python】教程:3-13 Hough直线变换
  18. 关于3年买车5年买房的那些事
  19. IoT黑板报:国产唯一支持多路互联的“中国芯”诞生
  20. [python][LXF][Notes]文件读写及序列化

热门文章

  1. 【3维视觉】ShapeNet数据集介绍
  2. Google、百度、GitHub搜索技巧
  3. Unity AVPro Video 加载视频第一秒图片与例子
  4. 利用腾讯云推流做7*24小时云直播
  5. IC基础知识(二)锁存器与触发器
  6. Download the Vue Devtools extension for a better development experience
  7. ProAndroidDev_The latest posts from Android Professionals and Google Developer Experts.
  8. QT QWidgetAttribute
  9. ElasticSearch编程--基本的创建与查询操作
  10. xx_学驱动 -- VS2008环境配置、