ElasticSearch最佳入门实践(一)什么是ElasticSearch

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33746789/article/details/83505413

ElasticSearch

ElasticSearch是一种分布式、高可用、高性能、可伸缩的搜索和分析系统。

什么是搜索

百度:比如我们想搜索任何信息的时候,就会上百度搜索一下。例如找一部自己喜欢的电影,或者找一本自己喜欢的书。但是百度 != 搜索
垂直搜索(也就是站内搜索)
互联网搜索:电商网站、招聘网站、新闻资讯、各类APP
IT系统的搜索:OA软件、办公自动化软件、会议管理、日程管理、员工管理。搜索“张三”,“李四”,“李四儿”
搜索就是在任何场景下找到你想要的信息

如果用数据库搜索会怎么样

做软件开发的话,或者对IT、计算机有一定的了解的话,都知道,数据都是存储在数据库里面的,比如说电商网站的商品信息,招聘网站的职位信息,新闻网站的新闻信息,等等吧。所以说,很自然的一点,如果说从技术的角度去考虑,如何实现如说,电商网站内部的搜索功能的话,就可以考虑,去使用数据库去进行搜索。
1、比方说,每条记录的指定字段的文本,可能会很长,比如说“商品描述”字段的长度,有长达数千个,甚至数万个字符,这个时候,每次都要对每条记录的所有文本进行扫描,懒判断说,你包不包含我指定的这个关键词(比如说“手机”)
2、还不能将搜索词拆分开来,尽可能去搜索更多的符合你的期望的结果,比如输入“变形刚”,就搜索不出来“变形金刚”
用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差的。
在这里插入图片描述

什么是全文检索和Lucene

1、全文检索,倒排索引
例如数据库现在有100W条数据,按照之前的思路,其实就要扫描100W次,而且每次扫描都要匹配那个文本的所有字符,确认是否包含搜索的关键字,而且还不能将关键字拆解开来进行检索。
利用倒排索引进行搜索的话,假如100W数据,拆分出来的词语假设有1000W个,那么在倒排索引中就有1000W行,在实际检索的时候可能并不需要检索1000W次,很可能在搜索到第一次的时候就可以找到对应的数据也可能是第100次,1000次。
在这里插入图片描述

2、lucene,就是一个jar包,里面包含了封装好的各种建立倒排索引,以及进行搜索的代码,包括各种算法。我们就用java开发的时候,引入lucene jar,然后基于lucene的api进行去进行开发就可以了。用lucene,我们就可以去将已有的数据建立索引,lucene会在本地磁盘上面,给我们组织索引的数据结构。另外的话,我们也可以用lucene提供的一些功能和api来针对磁盘上的数据进行搜索

什么是Elasticsearch

如果用我们使用lucene封装了搜索引擎的功能,部署在单台机器上。假设磁盘就500G,当数据量很大超过了500G,这时候在一台机器上是放不下的。增加机器后单服务就变成了分布式集群了,那么前端在检索的时候要跟多台机器进行通信,还要保证系统的高可用,数据不丢失,如何建立高性能的索引等等
通过自己来实现很坑爹很麻烦。。。

Elasticsearch 底层封装了 lucene ,可以建立一个Elasticsearch集群,每一个节点就是一个es节点,每一个es节点都封装了lucene 暴露给用户的就是一个统一的地址。
Elasticsearch 会自动维护数据的分布到多个节点的建立,还有搜索请求到多个节点的执行
自动维护数据的冗余副本,保证一些机器宕机了,不会丢失任何数据
封装了更多的高级功能,给我们提供更多高级支持,让我们快速开发应用,开发更加复杂的应用,更加复杂的搜索功能,聚合分析的功能,基于地理搜索的功能

Elasticsearch 和 solr 的区别

  • 背景

    它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】
    开发语言:java语言开发
    Solr :2004年诞生
    Es:2010年诞生

  • 区别

    1、当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。
    2、在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。
    3、Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目】
    4、Solr支持更多的格式数据 [ xml , json , csv等 ],而 es 仅支持 json 文件格式。
    5、Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。 a) 单纯的对已有数据进行检索的时候,solr效率更好,高于es。
    6、Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多有第三方插件。

猜你喜欢

转载自blog.csdn.net/qq_33746789/article/details/83505413