好文档 - 专业文书写作范文服务资料分享网站

ElasticSearch面试题 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

v .. . ..

1:es介绍

Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎。设计用于云计算中,

能够达到实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口。 普通请求是...get?a=1 rest请求....get/a/1

2:全文搜索的工具有哪些

Lucene Solr Elasticsearch

3:es的bulk的引用场景

1.bulk API可以帮助我们同时执行多个请求 2.create 和index的区别

如果数据存在,使用create操作失败,会提示文档已经存在,使用index则可以成功执行。

3.可以使用文件操作 使用文件的方式 vi requests

curl -XPOST/PUT localhost:9200/_bulk --data-binary @request; bulk请求可以在URL中声明/_index 或者/_index/_type 4.bulk一次最大处理多少数据量

bulk会把将要处理的数据载入内存中,所以数据量是有限制的

最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载

一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M,

可以在es的配置文件中修改这个值http.max_content_length: 100mb 5.版本控制的一个问题

. . . 资 料. .

v .. . ..

在读数据与写数据之间如果有其他线程进行写操作,就会出问题,es使用版本控制才避免这种问题。

在修改数据的时候指定版本号,操作一次版本号加1。 6.es的两个web访问工具

BigDesk Plugin (作者 Luká? Vl?ek) 简介:监控es状态的插件,推荐!主要提供的是节点的实时状态监控,包括jvm的情况,linux的情况,elasticsearch的情况

Elasticsearch Head Plugin (作者 Ben Birch) 简介:很方便对es进行各种操作的客户端。

4:核心概念

集群 cluster***

代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。

es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,

你与任何一个节点的通信和与整个es集群通信是等价的。

主节点的职责是负责管理集群状态,包括管理分片的状态和副本的状态,以及节点的发现和删除。

只需要在同一个网段之内启动多个es节点,就可以自动组成一个集群。 默认情况下es会自动发现同一网段内的节点,自动组成集群。 分片 shards*

代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。

可以在创建索引库的时候指定

curl -XPUT 'localhost:9200/test1/' -d'{\默认是一个索引库有5个分片 index.number_of_shards: 5 副本 replicas*

代表索引副本,es可以给索引设置副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。

二是提高es的查询效率,es会自动对搜索请求进行负载均衡。 可以在创建索引库的时候指定,副本数后期可以更改。

. . . 资 料. .

v .. . ..

curl -XPUT 'localhost:9200/test2/' -d'{\默认是一个分片有1个副本 index.number_of_replicas: 1 数据重新分布 recovery *

代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。

数据的持久化操作 gateway*

代表es索引的持久化存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到硬盘。

当这个es集群关闭再重新启动时就会从gateway中读取索引数据。es支持多 种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。

自动发现机制 discovery.zen*

代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。

集群或节点与客户端交互的方式 Transport*

代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

index 和rdbms中的数据库相似 type 表 document 行 field 列

5:serachType

四种搜索类型,详细介绍 分布式搜索的流程

先把查询请求发送给集群的某一个节点 某个节点把最终的结果返回给客户端 QUERY_AND_FETCH

1:客户端把请求发送给集群中的某一个节点,这个节点会把查询请求发送给所有分片去执行,

. . . 资 料. .

v .. . ..

2:每个分片会把查询的数据(包含数据的分值,以及数据的详细内容)返回给某一个节点进行汇总,排序,然后把这些数据返回给客户端

这样客户端可能会收到(10*分片数量) 的数据 这种方案,数据量和排名都有问题。 优点:效率高,查询速度快 QUERY_THEN_FETCH(默认)

1:客户端把请求发送给集群中的某一个节点,这个节点会把查询请求发送给所有分片去执行,

2:每个分片会把查询的数据(包含数据的分值,以及数据ID)返回给某一个节点进行汇总,排序,取前10名

3:根据前10名的id到对应的分片查询数据的详细内容,返回给客户端 这种方案,解决了数据量的问题。 但是排名还有有问题。 (DFS:初始化散发过程) DFS_QUERY_AND_FETCH

1:在查询之前,会把所有分片的词频和文档频率(打分依据)汇总到一块

2:客户端把请求发送给集群中的某一个节点,这个节点会把查询请求发送给所有分片去执行,

3:每个分片会把查询的数据(包含数据的分值,以及数据的详细内容)返回 给某一个节点进行汇总,排序,然后把这些数据返回给客户端

解决了排名的问题 还存在数据量的问题 DFS_QUERY_THEN_FETCH

1:在查询之前,会把所有分片的词频和文档频率(打分依据)汇总到一块

2:客户端把请求发送给集群中的某一个节点,这个节点会把查询请求发送给所有分片去执行,

3:每个分片会把查询的数据(包含数据的分值,以及数据ID)返回给某一个节点进行汇总,排序,取前10名

4:根据前10名的id到对应的分片查询数据的详细内容,返回给客户端 既解决了排名问题,也解决了数据量的问题 但是性能最低

总结一下,从性能考虑QUERY_AND_FETCH是最快的,DFS_QUERY_THEN_FETCH是最慢的。从搜索的准确度来说,DFS要比非DFS的准确度更高。

高亮 补:高亮的注意事项:

. . . 资 料. .

v .. . ..

高亮的内容和原始内容是分开返回的

高亮字段的内容必须在es中存储(是否存储这个属性的值必须是true) 分组:分组统计数量或者分组统计分数 删除索引库:两种方式xurl或者java api Timeout :

6:建立索引和查询的流程

建立索引的流程:

首先根据空白符进行分割再切分关键词,去除停用词,如果有英文全部转换为小写,对切分的关键词建立索引,每个关键词都有对应的id,还有一个倒排索引队列存储该关键词出现在文档的id,在该文档出现的次数,在该文档出现的位置

查询的流程:

首先根据空白符进行分割,再切分关键词,去除停用词,如果有英文全部转换为小写,将切分后的到的关键词和索引库进行匹配

中文分词器-IK

es官方提供的分词插件对中文分词效果不是很好,可以集成ik分词,对中文分词效果比较好

如果想根据自己的规则进行分词,可以自定义分词库,自定义分词库文件必须以.dic结尾,词库文件的编码为utf—8 without bom,一个词语一行,将自定义的文件库加入到ES_HOME/config/ik/ 目录下,修改ik的配置文件,重启生效

7:为什么使用索引工具查询快

(使用了倒排索引的技术,大致介绍一下倒排索引,还有索引库中的词都是按照顺序排列 ,

后期根据一个关键词查询的时候,可以利用类似折半查找的算法,查询效率非常高) 使用了倒排索引的技术,一般我们都是这样定义id 关键词,倒排索引是关键词 id正好相反,使用索引工具进行查询时,首先得到关键词,建立倒排索引表,关键词----索引列表包含该关键词所在的文档的id、在该文档中出现的次数、在该文档中出现的位置信息,这种由属性值确定记录的位置的方式成为倒排索引。还有 索引库中的词都是按照顺序排列 ,后期根据一个关键词查询的时候,

. . . 资 料. .

ElasticSearch面试题 - 图文 

v.....1:es介绍Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口。普通请求是...
推荐度:
点击下载文档文档为doc格式
7q8bv1kgr86x2111f20r4n7xz5ee5l00blw
领取福利

微信扫码领取福利

微信扫码分享