Solr
大多数网站或应用都必须具有某种搜索功能,问题是搜索功能往往消耗巨大资源,由于沉重的数据库加载而拖垮应用性能。这也是为什么要将负载到一个外部搜索服务器是一个不错的idea。
Apache Solr 是一个流行的开源的,基于Java的信息搜索库,通过使用类似REST 的 HTTP API,这样决定了不挑编程语言,几乎任何的编程语言都可以使用 Solr。
Solr是一个开源搜索平台,用来构建搜索应用程序。建立在 Lucene(全文搜索引擎)上。Solr是企业级的,可扩展,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。
Solr本身可以看做数据库,(no sql类型的)搜索速度比数据库搜索速度更快,因此可以把搜索的部分交给 Solr。数据库本身不能实现分词效果,只能使用模糊查询,但是模糊查询的效率非常低效,查询速度慢,由于实际生活中,一般模糊搜索使用的较多,这样数据库压力很大,所以需要提供专业的搜索引擎来处理。
Solr是基于开放标准的,所以是高度可扩展的。Solr查询是简单的HTTP请求URL,响应又是一个结构化文档,主要是JSON,也可以是XML、CSV或者其他格式。这意味几乎所有的客户端都可以使用Solr,从其他Web应用程序到浏览器客户端,任何设备都可以使用 HTTP的平台可以与 Solr对话。
当单个 Solr 服务都无法处理整个数据搜索压力,那么在这种情况下可以使用 SolrCloud 扩展应用程序功能,以便在多个服务器之间更好地分发数据和处理请求。"Sharding"是一种缩放技术,其中集合被拆分成多个称为“碎片”(shards)的逻辑片段,以便将集合中的文档数量扩展到超过单个服务器上的物理数量,收集的查询将分发到集合中的每个碎片,并通过合并结果进行响应。同时也可以使用增加集合的“复制因子”,可以通过将请求扩展到多台计算机,来添加具有集合的额外副本的服务器,已处理更高的并发查询负载,切分和复制不是相互排斥的,它们共同使 Solr 变成强大的和可伸缩的平台。
只要系统环境里有 Java 运行时环境(JRE),便可以在该系统里安装 Solr。这些系统可以是 Linux,macOS和Windows。
安装Solr
- 确保自己系统中存在Java运行时环境
- Solr从Solr官网获取。Solr有三个独立的软件包:
- solr-7.0.0.tgz:适用于Linux/Unix/OSX
- solr-7.0.0.zip:适用于 Windows
- solr-7.0.0-src.tgz:Solr源码包,如果想在Solr上开发而不使用官方的 Git 存储库
准备 Solr
将 Solr发行压缩包 解压到指定目录中,建议全英文路径。此处以Linux为例,Solr压缩包放到指定目录之后,执行解压命令
tar zxf solr-7.0.0.tgz
目录布局
解压完文件之后,会发现有以下的目录:
-
bin
此目录中包含了几个重要的脚本,这些脚本将使 Solr 更容易执行。-
solr 和 solr.cmd
这是 Solr 控制脚本,也称为 bin/solr 对于linux系统,bin/solr.cmd 对于Windows系统。这个脚本是启动和停止 Solr 的首选工具,也可以在运行 SolrCloud模式时创建集合和内核,配置身份验证以及配置文件。 -
post
Post Tool,剔红了用于发布内容到 Solr 的一个简单的命令行界面。 -
solr.in.sh 和 solr.in.cmd
这些分别是Linux和Windows系统中提供的属性文件,在这里配置了 Java,Jetty 和 Solr的系统级属性。血多这些设置可以在使用 bin/solr 或者 bin/solr.cmd时被覆盖,但这里可以允许一个地方设置所有的属性。 -
install_solr_services.sh
该脚本用于 Linux 系统已安装 Solr作为服务。
-
-
contrib
Solr 的 contrib 目录包含 Solr 专用功能的附加插件。 -
dist
该 dist 目录包含主要的 Solr .jar文件。 -
docs
该 docs目录包含一个链接到在线 Javadocs 的 Solr。 -
example
该 example 目录包含了演示各种 Solr 功能的几种类型的示例。 -
licenses
该 licenses 目录包含了 Solr 使用的第三方库的所有许可证。 -
server
此目录是 Solr 应用程序的核心所在。此目录中的 README 提供了详细的概述:- Solr 的 Admin UI (server/solr-webapp)
- Jetty 库 (server/lib)
- 日志文件 (server/logs)和日志配置(server/resources)。
- 示例配置 (server/solr/configsets)
Solr 示例
Solr 包含了许多开始时使用的示例文档和配置。
-
exampledocs
这是一系列简单的 CSV 、XML 和 JSON 文件,也可以在首次使用 Solr 时使用 bin/post。 -
example-DIH
此目录包含一些 DataImport Handler (DIH)示例,可以帮助开始在数据库、电子邮件服务器甚至 Atom 提要真那个导入结构化内容。每个示例将索引不同的数据集。 -
files
该 files 目录提供了一个基本的搜索UI,可以用于文档(例如 Word 和 PDF)。 -
films
该 films 目录包含了一组大数据,包含了三种格式: CSV,XML 和 JSON 。
启动 Solr
Solr 包含了一个名为 bin/solr (对于 Linux、macOS系统)或者 bin/solr.cmd(对于Windows系统)的命令行界面工具。此工具允许启动和停止 Solr、创建核心和集合、配置身份验证和检查系统状态。
启动Solr:
bin/solr start
或者
bin\solr.cmd start
启动完之后,监听端口8983。
检查Solr状态:
bin/solr status
通过 Web 浏览器访问控制台
http://localhost:8983/solr/
如果没有使用示例配置启动 Solr 需要创建一个核心才能进行索引和搜索。
bin/solr create -c <name>
这将会创建一个使用数据驱动模式的核心,当文档添加到索引时,该模式会尝试猜测正确的字段类型。
查看所有创建新核心的可用选项
bin/solr create -help
Solr配置文件
在 Solr 中又几个配置文件,以XML格式。
Solr Home
在运行 Solr 时,需要访问主目录。
第一次安装 Solr 时, 主目录是:server/solr。但是有一些示例可能会更改此位置(例如 运行 bin/solr start -e cloud 主目录变为 example/cloud)
Solr 主目录包含了重要的配偶中信息,并且是 Solr 将存储索引的地方,如果在单机模式下与在 SolrCloud 模式下运行 Solr时,主目录的布局会不同。
单机模式
<solr-home-directoory>/
solr.xml
core_name1/
core.properties
conf/
solrconfig.ml
managed-schema
data/
core_name2/
core.properties
conf/
solrconfig.ml
managed-schema
data/
SolrCloud 模式
<solr-home-directory>/
solr.xml
core_name1/
core.properties
data/
core_name2/
core.properties
data/
- solr.xml:Solr服务器实例指定配置选项。
- 每个 Solr 核心:
- core.properties: 为每个核心定义特定的属性,例如其名称,核心所属的集合、模式的位置已经其他参数。
- solrconfig.xml: 控制高级行为,比如可以为数据目录指定一个备用位置。
- managed-schema(或用schema.xml代替): 描述要求 Solr 索引的文档,模式将文档定义为字段集合,可以同时定义字段类型和字段本身。字段类型定义功能强大,包含了有关 Solr 如何护理传入字段值和查询值的信息。
- data/: 包含低级索引文件的目录。
值得注意的是:SolrCloud 示例不包括每个 Solr Core 的 conf 目录(所以没有 solrConfig.xml或 Schema 文件)。这是因为通常在 conf 目录中找到的配置文件存储在 Zookeeper 中,所以可以在集群中传播。如果使用 SolrCloud 与嵌入式 Zookeeper 的情况下,可以看到 zoo.cfg 和 zoo.data,都是 Zookeeper 的配置和数据文件。但是如果运行自己的 Zookeeper 集成,则在启动 Zookeeper 配置文件时,将会提供自己的 Zookeeper配置文件,而 Solr 中的副本将不会被使用。
评论区