Apache Solr 教程:什么是 Solr?架构和安装

什么是 Apache Solr?

Apache Solr 是由 Apache 软件基金会用 Java 语言编写的一个开源搜索服务器平台。它是一个高度可扩展且可部署的搜索引擎,可处理大量以文本为中心的数据。使用 Apache Solr 的目的是索引和搜索大量的网络内容,并根据搜索查询提供相关内容。

Apache Solr 是一个基于 REST-API 的 HTTP 包装器,围绕一个名为 Apache Lucene 的全文搜索引擎。反向索引是单词列表,其中每个单词条目都链接到存储它的文档。这样,通过简单的“get”操作即可获取搜索查询“guru99”的所有文档。

Apache Solr 历史

  • 1999年:Doug Cutting 发布了 Lucene
  • 2004年:Solr 由 CNET 的 Yonik Seeley 作为公司内部项目的一部分开发
  • 2006年:CNET 通过将其捐赠给 Apache 软件基金会而公开了源代码
  • 2008年:Solr 1.3 发布,增强了搜索功能和性能
  • 2010年:Lucene 和 Solr 合并
  • 2012年:Solr 4.0 版本发布,引入了新的 Solr Cloud 功能
  • 2016年:Solr 6.0 发布,支持并行 SQL 查询的执行

Apache Solr 的特性

以下是 Apache Solr 的重要特性

  • 自动负载均衡
  • 基于标准的开放接口 – XML、JSON 和 HTTP
  • 支持推荐和拼写建议
  • 支持自动完成和地理空间搜索
  • 内置安全功能,支持身份验证和授权
  • 允许进行多语言关键字搜索
  • 自动完成/即时预测
  • 批量和流式处理
  • 易于构建机器学习模型
  • 特别针对高流量网站优化
  • 全面的 HTML 管理界面
  • 支持 Schema 和 Schemaless 配置
  • 分面搜索和过滤
  • 整个集群的中央配置

Apache Solr 中使用的关键术语

现在,在本 Solr 搜索引擎教程中,我们将学习 Apache Solr 中使用的关键术语

关键术语 描述
Solr Core Solr Core 可以定义为由所有文档派生的文本和字段的索引。一个 Solr 实例可以有一个或多个 Solr Core。

Core = Lucene 索引的实例 + Solr 配置

Solr 实例 Solr 实例是运行在 Java 虚拟机(JVM)中的 Solr 实例。在独立模式下,它只有一个实例;而在云模式下,您可以有一个或多个实例。
索引 索引是将文档内容添加到 Solr 索引的方法。Apache Solr 使用 Apache Lucene 反向索引技术。
文档 它是字段及其值的集合。文档是存储在 Apache Core 中的基本数据单位。一个 Apache Core 可以包含一个或多个文档。
字段 字段是存储文档中实际数据的键值对。键指定字段名,值包含该字段数据。一个文档可以有一个或多个字段。Apache Solr 使用它来索引文档内容。
RESTful API 要与 Solr 通信,不必一定使用 Java 编程。相反,Apache Solr 提供了 RESTful 服务进行通信。您可以通过 JSON、XML 和 CSV 等各种文件格式发送文档并接收结果。
全文搜索 Solr 提供全文搜索功能,如分词、短语、拼写检查、自动完成、通配符等。
管理界面 Solr 提供了一个易于使用、用户友好、功能强大的用户界面。使用该界面,您可以执行管理日志、添加、删除、更新和搜索文档等任务。
以文本为中心,按相关性排序 Apache Solr 用于搜索文本文档,并根据用户的查询交付结果。
节点 在 Solr cloud 中,每个实例都称为一个节点。
集群 集群是节点的集合。
Collection 集群有一个逻辑索引,也称为集合。
分片 它是集合的一个小区域,提供索引的一个或多个副本。
副本 副本是运行在节点中的分片副本。
主节点 它是分片的一个副本,它将 Solr Cloud 的请求发送给其余副本。

Apache Solr 架构

现在,在本 Solr 搜索教程中,让我们来了解 Apache Solr 架构

Apache Solr Architecture
Apache Solr 架构

Apache Solr 包含以下组件

查询

查询解析器解析您需要传递给 Solr 的查询。它会验证您的查询以检查语法错误。在解析查询后,它将其转换为 Lucene 已知的格式。

请求处理程序

发送到 Apache Solr 的请求由请求处理程序处理。请求可以是查询请求或索引更新请求。您需要根据您的要求选择请求处理程序。要将请求传递给 Solr,您需要将处理程序映射到特定的 URL 端点。

响应写入器

响应写入器将为输入查询生成格式化的输出。它支持 XML、JSON、CSV 等各种格式。对于不同类型的请求,您可能需要不同的响应写入器。

更新处理程序

当您向 Apache Solr 发送更新请求时,它会经过一组插件、签名、日志记录和索引。这个过程称为更新请求处理器。更新处理程序还负责修改,如添加或删除字段等。

Apache Solr 应用

应用 用途
内部网门户
  • 易于访问搜索
  • 应用程序启动
  • 新闻和活动通知
  • 单点登录认证
联邦客户端
  • 简化的演示
  • 跨所有内容搜索
  • 仅授权访问
  • 文档查看
仪器数据集
  • 为科学家优化
  • 数据依赖菜单
  • 专用网格过滤器
监管文件
  • 专为研究人员设计
  • 丰富的元数据访问
  • 电子表格导出
  • 查看文档加速器
嵌入在 PLM 应用程序中
  • 提供比关系数据库管理系统(RDBMS)更好的搜索体验
  • 延迟绑定安全模型
  • 文档操作显示在工具栏上

如何安装 Apache Solr?

第 1 步) 打开网站并继续订阅
转到此 链接,点击“Continue to Subscribe”(继续订阅)。

Install Apache Solr

第 2 步) 点击“接受条款”
在下一页上,点击“接受条款”。

Install Apache Solr

第 3 步) 等待一段时间
接下来,等待一段时间,然后请求将在一段时间后被接受。

Install Apache Solr

第 4 步) 继续配置
刷新页面,然后点击“Continue to Configuration”(继续配置)。

Install Apache Solr

第 5 步) 继续启动
保持默认设置,然后点击“Continue to Launch”(继续启动)。

Install Apache Solr

第 6 步) 保持默认设置
在下一页上,保持默认设置

  • 确保您拥有密钥的 pem 文件
  • 点击“启动”

Install Apache Solr

您将看到此成功消息

Install Apache Solr

第 7 步) 记下公共 DNS
在 EC2 控制台中,记下您实例的公共 DNS

Install Apache Solr

第 8 步) 打开以下 URL
要访问 Solr,只需使用 URL

http://publicdns:8983

在我们的例子中,它变成

http://ec2-18-221-175-53.us-east-2.compute.amazonaws.com:8983

Install Apache Solr

注意:如果您在访问实例时遇到问题,请按照下方 Solr 查询示例所示,更改您实例中的入站和出站规则以允许所有流量

Install Apache Solr

Elasticsearch 与 Apache Solr 对比

参数 Apache Solr Elastic Search
性质 这是一个开源项目。 不是开源项目。
静态状态 在 schema.xml 中静态定义 在 elasticsearch.yml 中静态定义
格式 XML, CSV, JSON 仅 JSON
索引 可在运行时通过 collection/core reload 重新加载 通过 REST 调用在索引/类型创建期间定义
文档 文档齐全。 文档不全。
拆分分片 可能 不可能

Apache Solr 的优点

  • 有助于减少查找信息所需的时间
  • 它是一个快速、简单、强大且灵活的搜索引擎
  • 帮助您使产品和服务更易于访问
  • 增加客户在 Web 应用程序上的支出
  • 帮助您改善 Web 应用程序上的用户体验,从而增加收入和利润
  • 全面的基于 HTML 的管理界面
  • 通过 XML 配置灵活且适应性强
  • 可扩展的插件架构
  • 高度可扩展、健壮、容错的搜索引擎
  • 支持分布式、分片、复制、集群和多节点架构

Apache Solr 的缺点

  • 它不是 ACID 兼容的数据存储
  • 它不能用作主数据存储。只能用作辅助数据存储
  • 不提供对事务和分布式事务的支持
  • 不支持 JOIN 和复杂查询
  • 不适合范式化数据

摘要

  • Apache Solr 是一个开源的 REST API 基础的搜索服务器
  • Apache Solr 由 CNET 的 Yonik Seeley 作为公司内部项目的一部分开发
  • Apache Solr 提供自动完成和地理空间搜索等功能
  • Solr Core、Solr Instance、Indexing、Document、Restful APIs、Full-text search、Admin Interface 等是 Apache Solr 中使用的一些关键术语
  • Query、Request handler、Request writer 和 update handlers 是 Apache Solr 的一些重要组件
  • Intranet Portal、Federated Client、Instrument Datasets、Regulatory Documents、Embedded in PLM Application 是一些有用的 Apache Solr 应用
  • 与文档糟糕的 Elasticsearch 相比,Apache Solr 文档齐全
  • Apache Solr 的最大优势在于它有助于减少查找信息所需的时间
  • 该应用的主要缺点是它不是 ACID 兼容的数据存储