ElasticSearch搜素引擎常见面试题

一、ElasticSearch基础:

1、什么是ElasticSearch:

	ElasticSearch是基于Lucene的Reatful的分布式实时全文搜素引擎,每个字段都被索引并可被搜索,可以快速存储、搜素、分析海量的数据。
全文检索是指对每一个词建立索引,指明该词在文章中出现的次数和位置。当查询时,根据事先建立的索引进行查找,并将查找的结构反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

2、ElasticSearch的基本概念:

  • index 索引:索引类似于mysql中的数据库,ElasticSearch中的索引树存储数据的地方,包含了一堆有相似结构的文档数据。

  • type类型:类型是用来定义数据结构,可以认为是mysql中的一张表,type是index中的一个逻辑数据分类。

  • document文档:类似于mysql中的一行,不同之处在于ES中的每个文档可以有不同的字段,但是对应通用字段应该具有相同的数据类型,文档是es中最小数据单元,可以认为一个文档就是一条记录。

  • Field字段:Field是ElasticSearch的最小单元,一个document里面有多个field。

  • shard分片:单台机器无法存储大量数据,es可以将一个索引中的数据切片分为多个shard,分布在多台服务器上存储。有了shard就可以横向扩展,存储更多数据。

  • replica副本:任何服务器随时可能故障或宕机,此时shard可能会丢失,通过创建replica副本,可以在shard故障时提供备用服务,保证数据不丢失,另外replica还可以提升搜素操作的吞吐量。

    shard分片数量在建立索引时设置,设置后不能修改,默认5个;replica副本数量默认一个,可随时修改数量
    

3、什么是倒排索引:

	在搜素引擎中,每个文档都有对应的文档ID,文档内容可以表示为一系列关键词的集合,例如,某个文档经过分词,提取了20个关键词,而通过倒排索引,可以记录每个关键词在文档中出现的次数和出现位置。也就是说,倒排索引是 关键词到文档ID的映射,每个关键词都对应着一系列的文件,这些文件中都出现了该关键词。

倒排索引项主要包含如下信息:

  • 文档ID,用于获取原始信息。
  • 词条频率:记录该词条在文档中出现的次数,用于后续相关性算分。
  • 位置(Position):记录词条在文档中的分词位置(多个),用于做短语搜索。
  • 偏移(offset):记录词条在文档的开始和结束位置,用于做高亮显示。

4、doc_values 的作用:

	倒排索引虽然可以提高搜索性能,但也存在缺陷,比如我们需要对数据做排序或聚合等操作时,lucene会提取所有出现在文档集合的排序字段,然后构建一个排好虚的文档集合,而这个步骤是基于内存的,如果排序数量巨大的话,容易造成内存溢出和性能缓慢。
	doc\_values 就是 es 在构建倒排索引的同时,会对开启 doc\_values 的字段构建一个有序的“document文档 ==> field value”的列式存储映射,可以看作是以文档维度,实现了根据指定字段进行排序和聚合的功能,降低对内存的依赖。另外 doc\_values 保存在操作系统的磁盘中,当 doc\_values 大于结点的可用内存, ES 可以从操作系统也缓存中加载或弹出,从而避免发生内存溢出的异常,但如果 docValues 远小于结点的可用内存,操作系统就自然将所有的 doc\_values 存于内存中(堆外内存),有助于快速访问。

5、text 和 keyword 类型的区别:

	两个类型的区别主要是分词:keyword 类型是不会分词的,直接根据字符串内容建立倒排索引,索引 keyword 类型的字段只能通过精确值搜索到
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值