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 包含以下组件
查询
查询解析器解析您需要传递给 Solr 的查询。它会验证您的查询以检查语法错误。在解析查询后,它将其转换为 Lucene 已知的格式。
请求处理程序
发送到 Apache Solr 的请求由请求处理程序处理。请求可以是查询请求或索引更新请求。您需要根据您的要求选择请求处理程序。要将请求传递给 Solr,您需要将处理程序映射到特定的 URL 端点。
响应写入器
响应写入器将为输入查询生成格式化的输出。它支持 XML、JSON、CSV 等各种格式。对于不同类型的请求,您可能需要不同的响应写入器。
更新处理程序
当您向 Apache Solr 发送更新请求时,它会经过一组插件、签名、日志记录和索引。这个过程称为更新请求处理器。更新处理程序还负责修改,如添加或删除字段等。
Apache Solr 应用
应用 | 用途 |
---|---|
内部网门户 |
|
联邦客户端 |
|
仪器数据集 |
|
监管文件 |
|
嵌入在 PLM 应用程序中 |
|
如何安装 Apache Solr?
第 1 步) 打开网站并继续订阅
转到此 链接,点击“Continue to Subscribe”(继续订阅)。
第 2 步) 点击“接受条款”
在下一页上,点击“接受条款”。
第 3 步) 等待一段时间
接下来,等待一段时间,然后请求将在一段时间后被接受。
第 4 步) 继续配置
刷新页面,然后点击“Continue to Configuration”(继续配置)。
第 5 步) 继续启动
保持默认设置,然后点击“Continue to Launch”(继续启动)。
第 6 步) 保持默认设置
在下一页上,保持默认设置
- 确保您拥有密钥的 pem 文件
- 点击“启动”
您将看到此成功消息
第 7 步) 记下公共 DNS
在 EC2 控制台中,记下您实例的公共 DNS
第 8 步) 打开以下 URL
要访问 Solr,只需使用 URL
http://publicdns:8983
在我们的例子中,它变成
http://ec2-18-221-175-53.us-east-2.compute.amazonaws.com:8983
注意:如果您在访问实例时遇到问题,请按照下方 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 兼容的数据存储