ElasticSearch面试题
Elasticsearch 是一个基于 Lucene 的实时的分布式搜索和分析引擎,设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful 接口。
一、Elasticsearch 的介绍
Elasticsearch 是一个基于 Lucene 的实时的分布式搜索和分析引擎,设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful 接口。
二、全文搜索的工具有哪些
Lucene、Solr、Elasticsearch 是三种常见的全文搜索引擎。
三、ES 的 bulk 操作
bulk API 可以帮助我们同时执行多个请求,create 和 index 的区别是,如果数据存在,使用 create 操作失败,会提示文档已经存在,使用 index 则可以成功执行。bulk 请求可以在 URL 中声明 /_index 或者 /_index/_type。
四、版本控制
在读数据与写数据之间,如果有其他线程进行写操作,就会出问题,ES 使用版本控制来避免这种问题。在修改数据的时候指定版本号,操作一次版本号加 1。
五、ES 的两个 web 访问工具
BigDesk Plugin 是监控 ES 状态的插件,提供的是节点的实时状态监控,包括 JVM 的情况,Linux 的情况,Elasticsearch 的情况。Elasticsearch Head Plugin 是很方便对 ES 进行各种操作的客户端。
六、核心概念
集群(Cluster):代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。
分片(Shards):代表索引分片,ES 可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。
副本(Replicas):代表索引副本,ES 可以给索引设置副本,副本的作用是一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高 ES 的查询效率,ES 会自动对搜索请求进行负载均衡。
数据重新分布(Recovery):代表数据恢复或叫数据重新分布,ES 在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
持久化操作(Gateway):代表 ES 索引的持久化存储方式,ES 默认是先把索引存放到内存中,当内存满了时再持久化到硬盘。当这个 ES 集群关闭再重新启动时就会从 Gateway 中读取索引数据。
自动发现机制(Discovery):代表 ES 的自动发现节点机制,ES 是一个基于 P2P 的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。