Elasticsearch 常见面试题总结
大部分项目都会用到 Elasticsearch ,面试难免会被问到。于是,利用春节时间简单总结了一下 Elasticsearch 常见问题,希望对球友们有帮助。
少部分内容参考了 Elasticsearch 官方文档的描述,在此说明一下。
Elasticsearch 基础

Elasticsearch 是什么?
ElasticSearch 是一个开源的 分布式、RESTful 搜索和分析引擎,可以用来解决使用数据库进行模糊搜索时存在的性能问题,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。
ElasticSearch 使用 Java 语言开发,基于 Lucence。ES 早期版本需要 JDK,在 7.X 版本后已经集成了 JDK,已无需第三方依赖。
Github 地址:https://github.com/elastic/elasticsearch 。
Lucene 是什么?
Lucene 是一个 Java 语言编写的高性能、全功能的文本搜索引擎库,提供强大的索引和搜索功能,以及拼写检查、高亮显示和高级分析功能。
如果我们直接基于 Lucene 开发,会非常复杂。并且,Lucene 并没有分布式以及高可用的解决方案。像 ElasticSearch 就是基于 Lucene 开发的,封装了许多 Lucene 底层功能,提供了简单易用的 RestFul API 接口和多种语言的客户端,开箱即用,自带分布式以 及高可用的解决方案。
Github 地址:https://github.com/apache/lucene
Elasticsearch 可以帮助我们做什么?
举几个常见的例子:
- 实现各种网站的关键词检索功能,比如电商网站的商品检索、维基百科的词条搜索、Github 的项目检索;
- 本地生活类 APP 比如美团基于你的定位实现附近的一些美食或者娱乐项目的推荐;
- 结合 Elasticsearch、Kibana、Beats 和 Logstash 这些 Elastic Stack 的组件实现一个功能完善的日志系统。
- 使用 Elasticsearch 作为地理信息系统 (GIS) 管理、集成和分析空间信息。
- ......
电商网站检索:

ELK 日志采集系统架构(负责日志的搜索):
