020-29815005
预约专线时间:09:00-23:59

数据分析师的面试题目

新闻来源:优漫教育 日期:2021-06-23
这篇文章给大家带来了ES的面试指导,题目大多来自于网上,有一小部分来自于工作总结,每个题目都会给大家一个参考答案,希望对你面试数据分析师有所帮助。
 一、您对ES的介绍,包括它的功能和应用场景?

  是一款基于Lucene的开放源码分布式搜索引擎,具有分布式多用户功能,基于RESTfulweb界面。能实现实时搜索,高性能计算;同时Elitesearch具有很强的横向扩展能力,不需要headservice,基本上实现了零配置。可用于搜索引擎,日志数据分析,全文检索,结构化检索等多种场景。


 二、请详细地描述Editionsearch删除和更新文档的过程。

  光盘上的每一段都有对应的.del文件。发送删除请求之后,并不会真正删除该文档,而是将其标记为.del文件中的删除。此文档仍然可以与查询匹配,但将在结果中对其进行筛选。合并段时,在.del文件中标记为删除的文档不会写到新段中。

  Elasticsearch在创建新文档时为该文档指定一个版本号,当执行更新时,在.del文件中旧版本的文档被标记为删除,新版本的文档被索引到一个新段。文档的老版本仍然可以与查询匹配,但会在结果中被过滤掉。


  三、如果同时发生这种情况,Elitesearch如何保证读写的一致性?

  使用version号可以用version并发控制,以确保新版本不会被旧版本覆盖,由应用层处理特定的冲突;

  对写入来说,一致性级别支持quorum/one/all,默认情况下是quorum,也就是只在大多数片子都可用的情况下允许写入。但是,即使有了大多数可用的方法,也可能由于网络等原因而导致写入副本失败,从而使该副本被认为是失败的,分片将在不同的节点上重新生成。

  对读取来说,可以将replication设置为sync(默认),这样,当主分片和副本分片都完成时,该操作才会返回;如果将replication设置为async,也可以通过设置SearchRequestRequest参数_preferly来查询主分片,确保文档是最新版本。



  四、指数层次的优化方法有哪些?

  设计阶段的优化。

  1)根据增加的业务需求,采用基于日期模板创建索引,通过rolloverAPI滚动索引;

  2)使用别名进行索引管理;

  3)对索引执行每天凌晨时间的force_merge操作,以释放空间;

  4)采用冷热分离机制,将热能数据存入SSD,提高检索效率;定期对冷数据进行shrink操作,缩小存储空间;

  5)采用curator来管理索引的生命周期;

  6)对于需要分词的字段,合理设置分词器;

  7)Mapping阶段完全结合各个域的属性,以及是否需要检索、是否需要存储等等。

  写优化功能。

  1)在写入之前,复制数量被设置为0;

  2)在写入之前关闭refresh_interval,将其设置为-1,以禁用刷新机制;

  3)在写入期间:采用bulk批量写入;


大数据培训班


  五、尽可能使用自动生成的ID。

  查询调优。

  1)禁用wildcard;

  2)禁用批量terms(成千上万种情况);

  3)充分利用倒排索引机制,可以尽可能使用keyword类型的keyword;

  4)数据量大的场景,可根据时间确定索引后进行检索;


  为何使用ES查询?

  由于采用了倒排索引技术:一般我们是这样定义id关键词的,倒排索引就是关键词id,使用索引工具查询时,首先得到关键词,建立倒排索引表,关键词--索引列表包含id,id在该关键词所在的文档中,id在该文档中,id在该文档中,位置信息,这种根据属性值确定记录位置的方法叫做倒排索引。此外索引库中的单词也是按顺序排列的,后期根据一个关键字进行查询,可以利用类似于折半查找的算法,查询效率很高。


  六、比较ES查询的几种方法。

  _local:如果在本地查找,则查询操作首先在本地查找,而不是其他节点;

  primary:仅在主分片中进行查询;

  _shads:按照指定的分片进行查询,这种查询实现了es的极端速度查询。


  七、ES写入数据的执行流程?

  客户机选择一个node来发送请求过去,这个node叫做coordinatingnode(协调节点);

  coordinatingnode路由document,将请求转发到相应的节点(带有priyshard);

  primaryshard对实际节点进行处理,然后将数据与replicanode同步;

  coordinatingnode在发现primarynode和所有replicanode都对操作做出响应之后,将结果返回给客户机。


  八、执行ES读数据流程。

  在GET中,一个特定的数据条写到一个document中,这个document自动为您分配一个全局惟一的id-docid,同时根据docid将hash路由到相应的priyshard上面。docid也可以手动指定,例如使用订单id,用户id。可使用docid进行查询,将根据docid进行hash,判断此时将分配给哪个shard,然后从该shard去查询。

  客户机向任意一个节点发送请求,成为节点;coordinatenode对文档路由,它把请求转发给相应的节点,这个时候使用round-robin随机轮询算法,在primaryshard和它的所有replica中随机选择,以实现读取请求负载平衡;接受请求的节点返回到目录节点到目录节点;coordinatenode返回给客户的文档;


大数据培训班


  九、什么是Eclipse搜索的反向索引?

  参照答案:

  反向索引是搜索引擎最常用的存储方法,在搜索引擎的实际应用中,有时需要根据特定的关键字值来查找记录,这样的反向索引就叫做关键词反向索引。

  使用索引可以提高查询效率。举例来说,已知有5个文本文件,需要查找某个单词在哪个文本文件中,最直观的做法是将每一个文本文件逐个装入内存,然后使用for循环遍历,直到找到该单词为止,这是一种前向索引方法。倒排索引的实践是首先对文件进行分词,分别以单词为索引,对应的值为文件,通过这个索引可以直接查找文件。

  倒排索引的好处还包括,在处理复杂的多关键字查询时,可以在倒排表中完成查询的并、交等逻辑运算,得到结果后再存取记录,这样就可以将文档查询转换成地址集合的操作,从而提高查找速度。


  十、详述Elasticsearch搜索的过程?

  引用回答:搜索被划分为“query”和“获取”两个阶段:

  1)在初始查询阶段,查询将广播到索引中的每一个分片复制(主分片或副本分片)。每一个碎片执行本地搜索,并为匹配文档构建优先队列。每一块都返回其各自优先队列中所有文档的ID和排序值给协调节点,它将这些值合并到自己的优先队列中,从而生成一系列全局排序的结果。

  2)下一步是取回阶段,协调节点确定要提取哪些文档并将多个GET请求提交到相关的分片。每一个片断装入并充实您的文档,然后在需要时返回文档到协调节点。在收回所有文档之后,协调节点将结果返回给客户机。



  十一、中心概念(什么是集群,分片,再分布,自动发现机制,交互方式)

  群集(Clyer):包含具有相同clyer.name的一个或多个节点。群集中的节点协同工作,共享数据,共同承担工作负荷。因为节点是依赖集群的,所以集群会自行调整数据分布。

  结点(node):节点是逻辑上独立的服务,它可以存储数据,并参与集群的索引和搜索功能,节点也有唯一的名字,群集通过节点名来管理和通信。

  索引(Index):与关系型数据库实例(Database)相当。一个索引仅仅是一个逻辑名称空间,指向一个或多个分片(shards)。

  DocumentType(Tye):相当于数据库中的table概念。每一个文档都必须在EliteSarch中设置其类型。

  Document:与数据库中的row等价,它是可进行索引的基本单位。文件以JSON格式储存。您可以在一个索引中存储多个文档。

  映射:相当于数据库中的映射,用于约束字段的类型,但是Elitesearch的mapping可以基于数据自动创建。

  碎片(shard):是工作单元(workerunit)底层的成员,用于在集群中分配数据,它仅负责存储索引中所有数据的一小部分。blocked是一个独立的Lucene实例,它本身就是一个完整的搜索引擎。文件是用分片来存储和索引的,但是我们的程序并不直接和它们通信。相反,它们直接与索引通信。将碎片看作是数据的容器。将数据存储在切片中,然后再将分片分配到集群的节点。

  分成两种类型:主分片(priyshard)和从分片(replicashard)。每个文档都属于索引中的一个主分片。由分段。