什么是Elasticsearch
Elasticsearch 是一个分布式,高性能,高可用,伸缩扩展性好的搜索和分析系统
那什么是搜索?
搜索就是在搜索框中输入你想要搜索的东西,然后系统返回相关信息的数据
传统的关系型数据库也能进行搜索,es的优势
举个例。
例如电商平台,通过关键字查询商品信息。例如:搜索长袜
在数据库中如果存在两个字段productName,productIntroduce。
如果使用mysql进行搜索的一般是执行sql语句:select * from product where productName like '%长袜%' or productIntroduct like '%长袜%'。
缺点1:在进行数据库like查询的时候,mysql对product进行全表扫描,一条一条进行配对。
缺点2:针对用户需求,如果数据库中存在 '长筒袜' ,而该商品也在我搜索到的期望之内,但是数据库却无法匹配到
elasticSearch 和Lucene的关系与区别
Lucene是一个进行索引的创建的工具包。elasticSearch 是对Lucene的封装。
使用Lucene进行索引创建相对是比较麻烦的,并不是说Lucene不好,而是想要使用好Lucene需要花费大量的时间的学习Lucene上,学习成本相对大。
而且随着发展,数据量会持续增长,这时候单机版的Lucene就开始变得无法满足人们的日常需求了。这时候最好的办法就是在加入一个新的Lucene节点
新的Lucene节点加入之后,我们从单机版,直接切换到了集群版,这时候,我们需要对两个Lucene集群的通信进行处理,并且,由于前期的Lucene在单机上的
数据过多,在新的节点加入之后,我们需要进行数据均衡分布。这样一系列的操作相当麻烦。无形当中增加了很多的学习成本,对于企业的成本也会相应的增加。
而elasticSearch正好解决了这个问题。在数据量增大时,需要扩展新的节点,直接加入到elasticsearch集群中,es集群会自动维护数据评论的分散到各个节点中去,
es集群在接收到请求时会自动将请求推送到节点中执行。elasticSearch提供冗余备份,防止数据的丢失。并且es提供了大量高级复杂的搜索功能。
elasticSearch特点
可以做一个大型的分布式集群服务大公司处理PB级数据,也能够运行单机,服务小公司
elasticSearch是全文检索,数据分析,分布式技术的合集
对于开发者而言,es开箱即用
相对于普通的数据库,es提供全文检索,同义词处理,相关度排名,复杂数据分析,海量数据近实时处理。作为数据库的补充,es提供了关系型数据库所不能提供的功能