侧边栏壁纸
博主头像
Zhangsnke博主等级

这是Zhangxike的平凡生活!

  • 累计撰写 16 篇文章
  • 累计创建 11 个标签
  • 累计收到 15 条评论

目 录CONTENT

文章目录

初识Solr

Zhangsnke
2021-07-23 / 0 评论 / 0 点赞 / 711 阅读 / 4,414 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2021-07-23,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Solr

大多数网站或应用都必须具有某种搜索功能,问题是搜索功能往往消耗巨大资源,由于沉重的数据库加载而拖垮应用性能。这也是为什么要将负载到一个外部搜索服务器是一个不错的idea。

Apache Solr 是一个流行的开源的,基于Java的信息搜索库,通过使用类似REST 的 HTTP API,这样决定了不挑编程语言,几乎任何的编程语言都可以使用 Solr。
image.png

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

  1. 确保自己系统中存在Java运行时环境
  2. 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/
image.png

如果没有使用示例配置启动 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 中的副本将不会被使用。

0

评论区