当前位置:   article > 正文

elasticsearch常见面试题_elasticsearch面试题

elasticsearch面试题

1、什么是elasticsearch?

一个开源的分布式搜索引擎,可以用来实现搜索、日志统计、分析、系统监控等功能

2、什么是正向索引?什么是倒排索引

正向索引:基于文档id创建索引。查询词条时必须先找到文档,而后判断是否包含词条

倒排索引:对文档内容分词,对词条创建索引,并记录词条所在文档的信息。查询时先根据词条查询到文档id,而后获取到文档,倒排索引是为了解决非结构化数据的检索问题而产生的。

3、说说elasticSearch的数据模型核心概念

索引(index) 是一组具有共同特性的文档集合,类似数据库的表(table)

文档(Document),就是一条条的数据,类似数据库中的行(Row),文档都是JSON格式

字段(Field),就是JSON文档中的字段,类似数据库中的列(Column)

在ES中存储记录的单位是JSON“文档”,而JSON“文档”中的“字段”也就是组成JSON的一个个KV对。
Mapping(映射)是索引中文档的约束,例如字段类型约束。类似数据库的表结构(Schema)

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

Es集群有40个节点,一个索引包含5个分片,每个分片都有一个副本,

1、将堆内存最大值和最小值设置相等,防止elasticSearch运行过程中jvm改变堆内存大小,引起jvm内存震动,建议系统内存一半内存分配给jvm内存

2、关闭swap,elasticSearch需要一个所有内存操作都能被快速执行的环境,服务一旦使用swap内存,就会降低数据存取效率,影响性能

3、设置文件句柄,linux中每个进程默认打开的句柄数是1024,可以通过修改/etc/security/limits.conf来增大最大文件句柄数量,一般建议65535

4、根据业务增量需求,采用基于日期模板创建索引,通过roll over api 滚动索引

5、使用别名进行索引管理

elasticsearch中rollover的用法_vincent_duan的博客-CSDN博客_es rollover详情:elasticsearch中rollover的用法_vincent_duan的博客-CSDN博客_es rollover

6、每天凌晨定时对索引做段合并操作,以释放空间(在elasticsearch中每一个分片(shard) 每隔1秒都会refresh一次,每次refresh都会生成一个新的segment,按照这个速度过不了多久segment的数量就会爆炸,所以需要段合并)

7、仅针对需要分词的字段,合理的设置分词器

8、冷热分离

5、Elasticsearch 冷热分离和索引周期管理

  • HOT:索引还存在大量的读写操作
  • Warm:索引不存在写操作,但是还有被查询的需要
  • Cold:数据不存在写操作,读操作也不多
  • Delete:索引不再需要,可以被安全删除或者被关闭

基于Elasticsearch 6.6 X-PACK 推出的新功能,可以免费使用。那么我们将索引生命周期管理称为ILM。具体的操作步骤是:先创建一个或者多个策略(policy),然后每个策略根据实际需求去制定不同阶段加Actions。最后将这个策略应用到索引上,实现自动化统一管理。

  • 1、先创建一个或者多个策略(policy):
  • 2、创建模板,绑定policy,指定别名
  • 3、创建起始索引。
  • 4、索引基于第一步指定的policy进行滚动

具体

Elasticsearch 冷热分离与索引生命周期管理深度讲解与实战 - 腾讯云开发者社区-腾讯云

6、搜索结果处理-深度分页问题处理方案

1、from + size:

优点:支持随机翻页      缺点:深度分页问题,默认查询上限(from + size)是10000

2、search after:分页时需要排序,原理是从上一次的排序值开始,查询下一页数据

优点:没有查询上限(单次查询的size不超过10000) 缺点:只能向后逐页查询,不支持随机翻页

3、scroll:原理将排序数据形成快照,保存在内存。官方已经不推荐使用。

优点:没有查询上限(单次查询的size不超过10000) 缺点:会有额外内存消耗,并且搜索结果是非实时的

7、分词器的作用是什么?IK分词器有几种模式?IK分词器如何拓展词条?如何停用词条?

1、创建倒排索引时对文档分词 2、用户搜索时,对输入的内容分词

  • ik_smart:智能切分,粗粒度
  • ik_max_word:最细切分,细粒度

利用config目录的IkAnalyzer.cfg.xml文件添加拓展词典和停用词典 在词典中添加拓展词条或者停用词条

8、详细描述一下 Elasticsearch 搜索的过程

搜索执行阶段过程分俩个部分,我们称之为 Query(1-3) Then Fetch(4)

  • 1、客户端发送请求给任意节点,这个节点成为协调节点
  • 2、该协调节点将这个查询广播到索引里面的每一个shard(主shard或副本shard),每个shard在本地执行查询请求后会生成一个命中文档的优先级队列。这个队列的size等于from+size
  • 3、每个分片返回各自优先队列中所有文档的 ID 和排序值给协调节点,协调节点合并这些值到自己的优先队列中来产生一个全局排序后的结果列表。
  • 4、协调节点向包含这些文档id分片发送get请求,对应的分片将文档数据返回给协调节点,最后协调节点将数据整合返回给客户端

9、详细描述⼀下Elasticsearch索引⽂档的过程?

这⾥的索引⽂档应该理解为⽂档写⼊ ES,创建索引的过程。

  • 第⼀步:客户端发送请求给任意节点,这个节点成为协调节点
  • 第⼆步:使⽤⽂档_id 来确定⽂档属于分⽚,协调节点会把请求路由到属于分⽚主分片
  • 第三步:主分⽚上执⾏写操作,如果成功,则将数据同步到对应的副本分片中,等待结果返回。所有的副本分⽚都报告成功,主分片节点向协调节点报告成功,协调节点向请求客户端报告写⼊成功。

9.数据写入一致性

elasticSearch 通过consistency设置写操作的一致性级别,参数值

1.仅主要分片(one)   2.主分片和所有副本分片(all)

3 .大部分分片(quorum)

quorum=int((primary+number_of_replicas)/2)+1

其中number_of_replicas是指定的索引设置中的副本分片的数量,而不是当前副本的分片数量

10、ES中match和term差别对比,text和keyword区别、bool查询

match在匹配时会对所查找的关键词进行分词,然后按分词匹配查找,而term会直接对关键词进行查找。一般模糊查找的时候,多用match,而精确查找时可以使用term

text支持模糊查询,且会进行分词操作。keyword不支持模糊查询,且不支持分词操作。

bool查询中

1、must (must字段对应的是个列表,也就是说可以有多个并列的查询条件,一个文档满足各个子条件后才最终返回)

2、should (只要符合其中一个条件就返回)

3、must_not (与must相反,也就是说可以有多个并列的查询条件,一个文档各个子条件后才最终的结果都不满足)

4、filter(条件过滤查询,过滤条件的范围用range表示gt表示大于、lt表示小于、gte表示大于等于、lte表示小于等于)
 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/633690
推荐阅读
相关标签
  

闽ICP备14008679号