Apache Solr 通用术语

17 Mar 2025 | 4 分钟阅读

在 Apache Solr 中,以下是在使用 Apache Solr 时会用到的通用术语。 因此,有必要简要地了解这些术语。

实例 (Instance): Solr 中的实例类似于 Tomcat 实例或 Jetty 实例,指的是运行在 Java 虚拟机内部的应用程序服务器。每个 Solr 实例都通过主目录提供引用,可以在其中配置一个或多个核心在每个实例中运行。

核心 (Core): 当我们在应用程序中运行多个索引时,我们可以在每个实例中拥有多个核心,而不是多个实例,每个实例只有一个核心。

主目录 (Home): 术语 $SOLR_HOME 指的是主目录,其中包含关于核心及其配置、索引和依赖项的所有信息。

分片 (Shard): 数据在分布式环境中被划分到不同的 Solr 实例之间,数据的每个块都可以称为一个分片。分片包含整个索引的子集。

SolrCloud 术语

我们可以以主从模式安装分布式模式(即云环境)的 Solr。在云环境中,索引已在主服务器上创建,并被复制到一个或多个从服务器。

以下是与 Solr Cloud 相关的关键术语

节点 (Node): Solr 的每个实例都被视为 Solr Cloud 中的一个节点。

集群 (Cluster): 环境中的所有节点组合在一起构成一个集群。

集合 (Collection): 集合是通过集群获得的逻辑索引。

分片 (Shard): 它是集合的一部分,具有索引的一个或多个副本。

副本 (Replica): 在 Solr 核心的节点中运行的分片的副本被称为副本。

领导者 (Leader): 它也是分片的副本,将 Solr Cloud 的请求分发到其余副本。

Zookeeper: 这是一个 Apache 项目,Solr Cloud 可以使用它来集中配置和协调,以管理集群并选举领导者。

Solr 的配置

Solr 可以直接运行,无需修改任何配置。 但是在某些时候,我们需要针对特定的搜索应用程序要求优化 Solr。 以下是 Apache Solr 中的主要配置文件。

Solr.xml: 此文件位于 $SOLR_HOME 目录中,包含与 Solr Cloud 相关的信息。 给定的文件将用于加载有助于识别它们的核心。

Solrconfig.xml: 此文件包含核心特定的配置和定义,与请求处理和响应格式,以及索引、配置、管理内存和进行提交相关。

Schema.xml: 它包含整个模式以及字段和字段类型。

Core.properties: 此文件包含特定于核心的配置。 它被称为核心发现,因为它包含核心的名称和数据目录的路径。 它可以在被认为是核心目录的任何目录中使用。

对于使用 core.properties 自动发现的核心,以下是配置属性。

参数描述
name它提供了核心所需的名称。
config它可用于将配置文件指定为 solrconfig.xml 的默认文件。
dataDir它指定包含索引文件和更新日志的目录的路径,默认情况下是实例目录下的 data。
blogger它指定包含更新日志的目录的路径。
schema它设置模式文档的名称,默认为 schema.xml。
shard它为当前核心设置分片 ID。
collection这是此核心所属的 SolrCloud 集合的名称。
loadOnStartup如果此标志设置为 true,则在 Solr 初始化过程中加载核心时,将为该核心打开一个新的搜索器。
transient它表明如果达到 Solr 的 transientCacheSize 阈值,则可以自动卸载此核心。

下图显示了使用 core.properties 的 collection1 核心,并在服务器初始化期间使用 solrconfig.xml 对其进行配置。

Apache Solr General Terminology

Solrconfig.xml 概述

使用以下命令在命令行中启动服务器。

服务器启动后,转到 Solr 管理控制台,网址为 https://:8983/solr。 单击左侧的 collection1 选项,然后单击 Files 链接。 它会将您重定向到 collection1 核心的配置文件,以目录结构的形式显示。 要显示 collection1 核心的活动配置设置,请单击 solrconfig.xml。

常见的 XML 数据结构和类型元素

元素描述示例
<arr>对象的命名、有序数组
<arr name="last-components">
<str>spellcheck</str>
</arr>
<lst> Named, ordered list of name/
value pairs
<lst name
<lst>命名,名称的有序列表/
值对
<lst name="defaults">
<str name="omitHeader">true</str>
<str name="wt">json</str>
</lst>
<bool>布尔值 - true 或 false
<bool>true</bool>
<str>字符串值
<str>spellcheck</str>
or
<str name="wt">json</str>
<int>整数值
<int>512</int>
<long>长整型值
<long>1359936000000</long>
<float>浮点数值
<float>3.14</float>
<double>双精度值
<double>3.14159265359</double>