- 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
目录
前言
一、ES(ElasticSearch)是什么?
二、ES的使用场景
三、ES的特点
四、ES和传统数据库对比
总结
前言
今天项目通过python用到了ES数据库,第一次遇到,记录学习一下
一、ES(ElasticSearch)是什么?
- 它底层是基于Lucene的搜索服务器,它提供了一个分布式多用户能力的全文搜索引擎,是基于RESTful web接口.Elastcisearch是用java开发的.并且是作为Apache许可条款下的开放源码发布,是目前流行的企业级搜索引擎
二、ES的使用场景
-
搜索的数据对象是大量的非结构化的文本数据
-
文件记录达到数十万或者数百万甚至更多
-
支持大量基于交互式文本的查询
-
需求非常灵活的全文搜索引擎
-
对高相关度的搜索结果有特殊需求,但是没有可用的关系数据库可以满足
-
对不同的记录类型,非文本数据操作或安全事务处理的需求相对较少的情况.
- 实现企业海量数据的处理分析的解决方案.大数据领域的重要一份子,比如著名了ELK(不是那个BLG的ELK,但他确实很帅,是LPL自己的老公)框架.
三、ES的特点
- 天然分片,天然集群:es把数据分成多个shard,多个shard可以组成一份完整的数据,这些shard可以分布在集群中的各个机器节点中,随着数据的不断增加,集群可以增加多个分片,把多个分片放到多个机子上,已达到负载均衡,横向扩展,实际运算中,每个查询任务提交到某一个节点,该节点必须负责将数据进行整理汇聚,再返回给客户端,也就是一个简单的节点上进行map计算,并在一个固定的节点上进行Reduces得到最终结果向客户端返回.
- 天然索引:ES所有数据都是默认进行索引的,这点和mysql正好相反,mysql是默认不加索引,要加索引也必须特别说明,ES只有不加索引才需要特殊说明.而ES使用的倒排索引和mysql的B+tree索引并不相同
四、ES和传统数据库对比
- 传统数据库的弊端:
- 传统关系型数据库对于关键字的查询,只能逐字逐句的匹配,性能非常差.
- 匹配方式不合理
- lucene的索引结构增加了一层Term Index结构,用于快速定位,而这Term Index是缓存在内存中的,但mysql中的B+tree不在内存中,所以整体来看ES的速度更快,但是同时也更加消耗资源
-
咱们之前讲的处理分词,构建倒排索引,等等,都是这个叫lucene的做的。那么能不能说这个lucene就是搜索引擎呢?
还不能。lucene只是一个提供全文搜索功能类库的核心工具包,而真正使用它还需要一个完善的服务框架搭建起来的应用。
好比lucene是类似于发动机,而搜索引擎软件(ES,Solr)就是汽车。
总结
文章参考学习:
【ES三周年】ElasticSearch数据库简单介绍-腾讯云开发者社区-腾讯云
es数据库简介_es数据库介绍_少年阿文的博客-CSDN博客