vlambda博客
学习文章列表

solr8学习入门(一)solr简介


(一)solr是什么,能用来干什么

现实生活中我们都知道大多数网站或应用都必须具有某种搜索功能,问题是搜索功能往往是巨大的资源消耗并且它们由于沉重的数据库加载而拖垮你的应用的性能。

这就是为什么转移负载到一个外部的搜索服务器是一个不错的主意,Apache Solr是一个流行的开源搜索服务器,它通过使用类似REST的HTTP API,这就确保你能从几乎任何编程语言来使用solr。

Solr是一个开源搜索平台,用于构建搜索应用程序。它建立在Lucene(全文搜索引擎)之上。Solr是企业级的,快速的和高度可扩展的。使用Solr构建的应用程序非常复杂,可提供高性能。

Solr可以和Hadoop一起使用。由于Hadoop处理大量数据,Solr帮助我们从这么大的源中找到所需的信息。不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术。

总之,Solr是一个可扩展的,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。


(二)为什么要用solr

普通的数据库也可以实现搜索功能,为什么还要用solr呢?

  • solr本身也可以看成数据库(no sql类型),但它比数据库搜索速度更快,所以在项目中我们一般把搜索的部分交给solr,就像我们在淘宝搜索所看到的商品信息、百度搜索的结果,并不是来自数据库,而是来源于sorl的索引库

  • 数据库本身不能实现分词效果,而只能使用模糊查询,但是模糊查询非常低效,查询速度比较慢,由于在实际生活中,一般搜索是用的比较多的,这样数据库压力自然就很大,所以我们就让供专业的solr来做搜索功能

  • solr可以部署到单独的服务器上(WEB服务),它可以提供服务,我们的业务系统就只要发送请求,接收响应即可,降低了业务系统的负载

  • solr可以部署在专门的服务器上,它的索引库就不会受业务系统服务器存储空间的限制

  • solr支持分布式集群,索引服务的容量和能力可以线性扩展


(三)solr架构解析

以下是solrcloud的架构图,单机模式的solr只是在这个基础上的简化:

solr8学习入门(一)solr简介

  • SolrCloud:由分布在多个物理主机上的solr节点构成一个统一的solr分布式集群

  • Solr节点:物理概念,单个的物理主机,对应一个具体的solr服务器

  • core:物理概念,对应一系列document以及索引,单个solr主机上的core不相同

  • replica(leader):逻辑概念,每个replica都映射到某一个core,一个core可以有多个分布在不同主机上的replica,通过zookeeper进行选举产生leader

  • shard:逻辑概念,由多个replica以及一个leader组成集群,一个shard和同一个core的索引一一对应,也就是说shard的多个replica分布在不同的主机上成为core集群

  • collection:一套完整的倒排索引,一个独立的collection对应一个solrconfig.xml和schema.xml配置文件,可以分为不同的分片(shard),每个shard又由分布在不同主机上的replica组成

单机模式中,一个collection就对应一个core,当然也就没有shard和replica的概念了


欢迎扫码关注

程序猿得到了一盏神灯。灯神答应实现他一个愿望。然后他向灯神许愿,希望有生之年能写一个好项目。后来他得到了永生。