ElasticSearch认知
1.ElasticSearch是什么?
ElasticSearch是一个开源的分布式全文搜索引擎,它可以近实时地存储、检索数据,天生支持水平扩展,可以扩展到上百台服务器,处理PB级别的数据。ES是使用JAVA开发并使用Lucene作为其核心来实现索引和搜索的功能,但是es的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
历史: 一个叫Shay Banon的失业开发者开始抽象Lucene代码为"Compass", 后来他找到一份工作,这份工作处于高性能和内存数据网络的分布式环境中,所以他把"Compass"重写成一个独立的服务,这就是现在的Elasticsearch。
全文搜索引擎:全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立好的索引进行查找,并将查找的结果反馈给用户。这个过程就类似于通过字典查询某个字的过程。
2.ElasticSearch能干什么?
- 搜索
- 日志存储、分析
- 即时可视化
3.ElasticSearch和Lucene、solr的不同是什么?
它们的索引建立都是基于倒排索引的。
Lucene
20世纪初,一位名叫Doug Cutting的美国工程师,迷上了搜索引擎,于是做了一个用于文本搜索的函数库,命名为Lucene。
Lucene也是用Java写的,目标是为各种中小型应用软件加入全文搜索功能,是一个开源的项目,后成为Apache软件基金会的一个子项目。
ElasticSearch和Solr底层都是用的Lucene实现全文搜索的功能。
Solr是Apache下的一个顶级项目,也是用Java语言开发的,Solr提供了比Lucene更为丰富的查询语言,并对搜索、索引性能进行了优化。
Elasticsearch对外的消息接口是采用Restful接口,而Solr采用的是传统的Web-Service接口。
ES和Solr的技术选型
当单纯地对已有的数据进行搜索时,Solr更快
当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势。
随着数据量的增加,Solr的搜索效率会变得更低,而ElasticSearch却没有明显的变化。
总结:
1.es基本上是开箱即用,非常简单;Solr安装略微复杂一点
2.Solr利用Zookeeper进行分布式管理,而ElasticSearch天生就支持分布式。
3.Solr支持更多格式的数据,比如XML、JSON、CSV,而ElasticSearch只支持主流的JSON数据。
4.Solr官方提供的功能更多(但是很多用不到),而ElasticSearch本身更注重于核心功能,高级功能都由插件提供。
5.Solr查询快,但是更新索引时慢(ES建立索引快),用于电商等查询多的应用场景
6.Solr比较成熟,有更大的、成熟的社区,而ElasticSearch相对开发维护者较少、更新太快、学习成本较高。
4.ElasticSearch的核心优势是什么?
- 天生支持分布式
- 隐藏底层lucene的复杂性,提供良好的restful接口
- 数据写入时可以保持查询的高效性
- 安装简单
5.ElasticSearch7.x的新特性
更新Lucene到8.0版本
重大改进 - 正式废除单个索引下多Type的支持(默认单个索引下的type为_doc)
7.1开始,Security功能免费使用
ECK - Elasticsearch的集群可以部署到k8s容器环境中去
性能优化:
默认的primary shard数从5改为1,避免Over Sharding
更快的Top K

浙公网安备 33010602011771号