Solr是一个建立在阿帕奇·卢森之上的搜索引擎。Apache Lucene 使用倒置索引来存储文档(数据),并通过 Java API 为您提供搜索和索引功能。但是,要使用全文等功能,您需要在 Java 中编写代码。

Sor 是卢塞恩搜索的更高级版本。它提供更多功能,专为可扩展性而设计。Solr 附带了诸如分页、排序、分面、自动建议、拼写检查等功能。此外,Solr 对数字和日期数据类型使用三元结构,例如,存在一个正数int字段和另一个色调字段,表示三元字段。

Solr 是快速的文本搜索/分析;信贷归为其倒向的指数结构。如果您的应用程序需要大量文本搜索,Solr 是一个不错的选择。Netflix、Verizon、AT&T和高通公司等几家公司都使用Solr作为他们的搜索引擎。即使是由 AWS 提供的搜索引擎服务 Amazon 云搜索,也使用 Solr 内部。

本文提供了一种在生产中部署 Solr 的方法,并处理创建 Solr 集合。如果你只是从Solr开始,你应该从构建一个Solr核心开始。Core 是单个节点 Solr 服务器,没有分片和副本,而集合由各种分片及其副本(即核心)组成。

实现

在分布式搜索中,集合是跨多个服务器的逻辑索引。运行集合的每个服务器的一部分称为核心。因此,在非分布式搜索中,核心和集合是相同的,因为只有一个服务器。

在生产中,您需要实现一个集合,而不是 Solr 核心,因为核心将无法保存生产数据(除非您进行垂直缩放)。Apache Zookeeper 帮助创建跨多个服务器的连接。

可通过两种方式进行设置:

  1. 多个 Solr 服务器,并在其中一台服务器上使用 Zoo 守护者。
  2. 管理员在不同的服务器上与所有其他 Solr 服务器连接到它。

我们将演练使用第二种方法实现的过程。第一种方法与第二种方法类似,但后者是更具可扩展性的方法。

安装索尔

生成三台服务器,并在其中两台上安装 Solr。(注意:您可以生成任意数量的 Solr 服务器 – 我们在此示例中使用三个服务器)。要安装 Solr,您需要先安装 Java;例如,首先安装 Java。然后,下载所需的版本,并解开它。

安装:wgethttp://archive.apache.org/dist/lucene/solr/8.1.0/solr-8.1.0.tgz

Untar: tar -zxvf solr-8.1.0.tgz

您可以启动 Solr,通过去到 /home/ubuntu/solr-8.0.0文件夹与bin/solr 启动或在 bin 文件夹中与./solr 启动。这将在端口 8983 上启动 Solr,您可以在浏览器中对其进行测试。

复制完全相同的步骤,以便在第二台服务器上安装 Solr。

此外,请记住在 /etc/主机中为每个主机设置 IP 和名称的列表

例如:

IPv4 Public IP-solr-node-1 solr-node-1
IPv4 Public IP-solr-node-2 solr-node-2
IPv4 Public IP-zookeeper-node zookeeper-node

安装动物园管理员

现在,第三个服务器只需要ZooKeeper,你将配置推到它。

安装: wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

Untar : tar -zxvf zookeeper-3

9.tar.gz

如果您愿意,您可以将路径添加到 ZooKeeper 到bashrc文件。

接下来,在动物园管理员-3.4.9文件夹中,有一个示例配置文件,附带动物园管理员->zoo_sample.cfg。在路径中复制此文件并将其重命名为zoo.cfg。配置文件包含各种参数,如dataDir,它指定用于存储内存中数据库和事务日志的快照的目录,maxClientCnxns ,这限制了客户端连接的最大数量。

打开 zoo.cfg 文件并取消注释自动清除.snapRetainCount_3自动清除.清除间隔 =1并编辑数据 Dir = 数据。

接下来,开始动物园管理员。

bin/zkServer.sh start

创建配置集

配置集基本上是要存储的数据的蓝图。配置存储在服务器/solr/配置集

您可以创建自己的配置集,并用它来存储数据。更改托管架构文件内容以自定义配置。

  • 您可以修改 <field> 标记以表示要存储在一个文档中的数据字段。
  • 您可以通过使用 <fieldType> 标记定义类型或创建新类型。
  • id 字段是必填字段,因此无法将其删除。

在 Solr 中,您还使用许多其他内容,如动态字段、复制字段等。解释它们中的每一个都超出了本博客的范围,但为了了解更多信息,下面是官方文档。

现在,您已经创建了一个配置,并且具有chmod -R 777 配置文件夹,将配置推送到 ZooKeeper。

bin/solr zk upconfig -n config_folder_name -d /solr-8.0.0/server/solr/configsets/config_folder_name/ -z zookeeper-node:2181

推送配置后,在每个 Solr 服务器上启动 SolrCloud。要安装 SolrCloud,请参阅本文档。

连接到动物园管理员

要连接到动物园管理员:

bin/solr start -cloud -s example/cloud/node1/solr/ -c -p 8983 -h solr-node-1 -z zookeeper-node:2181

Solr 在此位置存储倒置索引:示例/云/节点1/solr/,因此您需要在连接时提及该路径。ZooKeeper 会自动在两个 Solr 服务器上分发分片和副本。添加某些数据时,将生成哈希。这一切都由动物园管理员处理。

要向服务器添加数据,您需要 POST 到链接http://lt;IP>:8983/solr/_lt;集合_name_gt;/更新提交_true

当数据自动分布在分片之间时,IP 可以来自任何服务器。

要从您的 solr 获取数据,请搜索http://lt;IP>:8983/solr/用户/选择?q_lt;searchString>

注意:如果您使用其中一个 Solr 服务器作为动物园管理员,则上述所有步骤都相同;您需要做的唯一不同操作是将 ZooKeeper IP 替换为 Solr 节点的 IP,并将端口替换为 9983,而不是 2181。

故障 排除

以下是设置 SolrCloud 时可能出现的几个常见问题。

创建 SolrCloud 并连接到动物园管理员后,您可能会看到错误,如 8983 或 7574 已在使用中。

解决 方案:

:fuser -k 8983/tcp -

这将找到进程并杀死它

解决方案:将chmod 777连接到新配置集。更安全的方法是将文件夹固定给 Solr 用户。

结论

Solr 拥有大量经验丰富的用户和贡献者,与竞争对手相比,他们更加成熟。Solr面临着来自弹性搜索的竞争,弹性搜索是开源的,也建立在阿帕奇·卢塞恩的基础上。弹性搜索被认为更善于搜索动态数据(如日志数据),而 Solr 则更好地处理静态数据。在扩展方面,虽然弹性搜索具有更好的内置可扩展性功能,使用 Zootos 和 SolrCloud,但使用 Solr 也很容易进行扩展。

作者生物:Pulkit Kidia是一名后端工程师,在云服务、系统设计和创建可扩展的后端系统方面拥有丰富的经验。他喜欢学习和集成新的后端技术。

Comments are closed.