首页 > 编程知识 正文

spring面试题及答案,500强企业面试题库

时间:2023-05-05 09:01:45 阅读:38328 作者:983

文章目录1 .什么是elk? 2.ELK能做什么? 简要介绍Elasticsearch? 4.Elasticsearch的主要特征5.ES相关概念6 .什么是分词器7? 什么是电子搜索倒排索引? 8.Elasticsearch是如何实现Master选举的? 9 .电子搜索如何避免脑裂? 10.Elasticsearch索引文档的过程11.Elasticsearch搜索过程概述如何?

前言:本文仅包含常见的ELK问题。 要查看其他java问题,请参阅JAVA | 2021中最完整的java问题和答案摘要

正文1 .什么是elk? ELK其实不是软件,而是一系列解决方案,是三个软件产品的首字母缩略词

Elasticsearch :负责搜索和保存日志

Logstash :负责日志的收集、分析和处理

Kibana :负责日志可视化

这三个软件是开源软件,通常一起使用,以Elastic.co公司的名义。

所以简称ELK。 添加Beats系列组件时,其官方名称为Elastic Stack

2.ELK能做什么? 在运输大量日志系统时,ELK组件可用于解决以下问题:

集中查询和管理分布式日志数据、系统监视、系统硬件和APP应用程序组件监视、

故障排除、安全信息和事件管理、报告功能等

简要介绍Elasticsearch? ElasticSearch是基于Lucene的搜索服务器。 提供分布式多用户功能

全文搜索引擎,基于rest风格的API的web界面。

Elasticsearch是用Java开发的,在Apache许可条款下作为开源发布,目前

受欢迎的企业搜索引擎。 专为云计算设计,可实时搜索、稳定、可靠、快速、安装

使用方便

4 .电子搜索的主要特点1 .实时分析

2 .分布实时文件存储,并对每个字段进行索引

3 .面向文档,所有对象都是文档

4 .高可用性、易扩展、支持群集、分片和复制(Shards和Replicas )

界面友好,支持JSON

5.ES相关概念node :安装了一个es服务器的节点。

集群:有由多个节点组成的集群

文档:可搜索的基础信息单元

索引:具有相似特征的文档的集合

Type可以为一个索引定义一个或多个类型

filed:es的最小单位,相当于有数据的列

Shards :已索引的拼贴。 每个瓷砖都是Shard

复制:复制索引

6 .分词是指将文本转换为一系列单词(Term or Token )的过程,也称为文本分析,在ES

其中有被称为Analysis

分词器是ES中专门处理分词的组件,英语为Analyzer,其组成如下。

character filters :对原始文本进行处理,如删除html标记

Tokenizer :按照一定的规则将原文本分成单词

token filters :对tokenizer处理的单词进行小写字母的转换、删除或添加等再加工

处理

ES提供了一个可以测试分词的API接口,便于验证分词的效果,endpoint为_analyze

ES也提供了很多内置分析器。

7 .电子搜索的倒排索引是什么? 正向索引以文档的ID为键,在表格中记录文档中每个单词的位置信息,并在搜索时扫描表格

中每个文档中单词的信息将一直显示,直到找到包含查询关键字的所有文档。

另一方面,倒排索引是通过分词策略形成词与文章的映射关系表的,这样的词典映射表

退出索引。

如果存在倒排索引,则可以进行o(1)时间复杂度的有效文章检索,检索效率大幅提高

比率。

因此,一般来说,正向索引是文档到关键字映射,已知的文档寻求关键字,反向索引是

关键字到文档的映射(根据已知关键字提示文档)。

8.Elasticsearch是如何实现Master选举的? Bully算法假设所有节点都有唯一的ID,并使用该ID对节点进行排序。

Elasticsearch的评选人由ZenDiscovery模块负责,主要包括Ping (

用于发现彼此)和Unicast (单播模块包含用于控制哪些节点需要ping的主机列表) )。

一部分;

根据nodeId词典对能够成为master的所有节点(node.master: true )进行排序,每次都进行选择

列出每个节点,按顺序排列自己知道的节点,然后选择第一个(第0个)节点。 首先那是

主节点。

如果对某个节点的票数达到一定值(

成为 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 阶段的目的:取数据。
路由节点获取所有文档,返回给客户端。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。