1.什么是ElasticSearch?
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。它可以快速地储存、搜索和分析PB级别的海量数据。维基百科、Stack Overflow、Github、包括我们常用的百度 也都采用它做的搜索。
常见的搜索引擎:Lucene、Solr、ElasticSearch。
2.ElasticSearch的使用场景?
ElasticSearch作为一个优秀的分布式开源搜索和分析引擎,能够支持索引多种数据类型,包括文本、数字、地理空间、结构化和非结构化的数据。也因此使得他的应用场景非常广泛:
- 企业搜索
- 应用程序搜索
- 网站搜索
- 安全分析
- 业务分析
- 日志处理和分析
- 基础设施指标和容器监测
- 应用程序性能监测
- 地理空间数据分析和可视化
3.ElasticSearch的应用实例分析?
百度从2013年开始采用ElasticSearch作为其搜索引擎的核心技术栈,下面作图简单分析一下ElasticSearch在百度搜索引擎中的基本原理:
- 1.用户首先在输入框中输入“内容检索关键字”。
- 2.搜索引擎会根据“检索关键字”到百度的ElasticSearch索引库集群中找相关的数据(百度使用爬虫技术在互联网上爬取海量的数据,并在索引库中建立了索引)。
- 3.ElasticSearch将找到所有相关数据返回给浏览器。
- 4.浏览器将数据展示给用户
3.ElasticSearch和Solr的对比?
下图是ElasticSearch和Solr搜索热度对比,两者相比较而言,ElasticSearch的搜索活跃度更高。但是这并不代表Solr这种技术就已经被淘汰。
ElasticSearch | Solr | |
---|---|---|
数据 | 只支持Json类型数据 | Xml、Json,CSV等多种数据类型 |
使用 | 开箱即用,简单快捷 | 相对较复杂 |
分布式存储 | 为分布式而生 | SolrCloud Solr4.x才支持 |
成熟度 | 成长迅猛 | 相对更加成熟,拥有强大的社区支持 |
效率 | 一边查询一边建立索引效率比Solr快 | 不考虑建索引的话查询效率比ES高 |
4.ElasticSearch内置REST接口?
接口 | 说明 |
---|---|
/index/_search | 搜索指定索引下的数据 |
/_aliases | 获取或者操作索引的别名 |
/index/ | 查看指定索引的详细信息 |
/index/type/ | 创建或者操作类型 |
/index/_mapping | 创建或者操作mapping |
/index/_setting | 创建或者操作设置(number_of_shards是不可更改的) |
/index/_open | 打开指定被关闭的索引 |
/index/_close | 关闭指定索引 |
/index/_refresh | 刷新索引(使新家内容对搜索可见,不保证数据被写入磁盘) |
/index/flush | 刷新索引(会触发Lucene提交,ElasticSearch基于Lucene) |
5.ElasticSearch与MySql结构对比?
MySql | ElasticSearch |
---|---|
database(数据库) | index |
table(表) | type |
row(行) | document |
column(字段) | field |