Apache Solr - 快速指南


Apache Solr - 概述

Solr是一个开源搜索平台,用于构建搜索应用程序它构建在Lucene(全文搜索引擎)之上。Solr 是企业级的、快速且高度可扩展的。使用 Solr 构建的应用程序非常复杂并且具有高性能。

Yonik Seely在 2004 年创建了 Solr,以便为 CNET Networks 公司网站添加搜索功能。2006年1月,它成为Apache软件基金会下的开源项目。其最新版本 Solr 6.0 于 2016 年发布,支持执行并行 SQL 查询。

Solr 可以与 Hadoop 一起使用。由于 Hadoop 处理大量数据,Solr 帮助我们从如此大的来源中找到所需的信息。Solr不仅可以用于搜索,还可以用于存储目的。与其他NoSQL数据库一样,它是一种非关系型数据存储处理技术

简而言之,Solr 是一个可扩展、易于部署的搜索/存储引擎,经过优化,可搜索大量以文本为中心的数据。

Apache Solr 的特点

Solr 是 Lucene 的 Java API 的包装。因此,使用 Solr,您可以利用 Lucene 的所有功能。让我们看一下 Solr 的一些最突出的功能 -

  • Restful APIs - 要与 Solr 通信,并不强制要求具备 Java 编程技能。相反,您可以使用 Restful 服务与其进行通信。我们以 XML、JSON 和 .CSV 等文件格式在 Solr 中输入文档,并以相同的文件格式获取结果。

  • 全文搜索- Solr 提供全文搜索所需的所有功能,例如标记、短语、拼写检查、通配符和自动完成。

  • 企业就绪- 根据组织的需要,Solr 可以部署在任何类型的系统(无论大小)中,例如独立系统、分布式系统、云系统等。

  • 灵活且可扩展- 通过扩展Java类并进行相应配置,我们可以轻松定制Solr的组件。

  • NoSQL 数据库- Solr 也可以用作大数据规模的 NOSQL 数据库,我们可以在集群中分配搜索任务。

  • 管理界面- Solr 提供了一个易于使用、用户友好、功能强大的用户界面,使用它我们可以执行所有可能的任务,例如管理日志、添加、删除、更新和搜索文档。

  • 高度可扩展- 在将 Solr 与 Hadoop 结合使用时,我们可以通过添加副本来扩展其容量。

  • 以文本为中心并按相关性排序- Solr 主要用于搜索文本文档,并根据与用户查询的相关性按顺序传递结果。

与 Lucene 不同,使用 Apache Solr 时您不需要具备 Java 编程技能。它提供了一个出色的可立即部署的服务来构建一个具有自动完成功能的搜索框,而 Lucene 不提供这一功能。使用 Solr,我们可以针对大规模(大数据)应用程序扩展、分发和管理索引。

搜索应用中的 Lucene

Lucene 是简单但功能强大的基于 Java 的搜索库。它可用于任何应用程序以添加搜索功能。Lucene 是一个可扩展的高性能库,用于索引和搜索几乎任何类型的文本。Lucene 库提供任何搜索应用程序所需的核心操作,例如索引搜索

如果我们有一个包含大量数据的门户网站,那么我们很可能需要在门户中使用搜索引擎来从庞大的数据池中提取相关信息。Lucene 是任何搜索应用程序的核心,提供与索引和搜索相关的重要操作。

Apache Solr - 搜索引擎基础知识

搜索引擎是指网页、新闻组、程序、图像等互联网资源的庞大数据库。它有助于在万维网上查找信息。

用户可以通过以关键字或短语的形式将查询传递到搜索引擎来搜索信息。然后搜索引擎在其数据库中进行搜索并将相关链接返回给用户。

谷歌搜索

搜索引擎组件

一般来说,搜索引擎由三个基本组成部分组成,如下所示:

  • 网络爬虫- 网络爬虫也称为蜘蛛机器人。它是一个通过网络收集信息的软件组件。

  • 数据库- 网络上的所有信息都存储在数据库中。它们包含大量的网络资源。

  • 搜索接口- 该组件是用户和数据库之间的接口。它可以帮助用户在数据库中进行搜索。

搜索引擎如何工作?

任何搜索应用程序都需要执行以下部分或全部操作。

标题 描述

1

获取原始内容

任何搜索应用程序的第一步都是收集要进行搜索的目标内容。

2

构建文档

下一步是根据搜索应用程序可以轻松理解和解释的原始内容构建文档。

3

分析文档

在开始索引之前,需要对文档进行分析。

4

索引文档

一旦构建并分析了文档,下一步就是对它们建立索引,以便可以根据某些键而不是文档的全部内容来检索该文档。

索引类似于我们在书的末尾的索引,其中常用单词及其页码显示,以便可以快速跟踪这些单词,而不是搜索整本书。

5

搜索用户界面

一旦索引数据库准备就绪,应用程序就可以执行搜索操作。为了帮助用户进行搜索,应用程序必须提供一个用户界面,用户可以在其中输入文本并启动搜索过程

6

构建查询

一旦用户发出搜索文本的请求,应用程序应该使用该文本准备一个查询对象,然后可以使用该对象查询索引数据库以获取相关详细信息。

7

搜索查询

使用查询对象,检查索引数据库以获取相关详细信息和内容文档。

8

渲染结果

收到所需结果后,应用程序应决定如何使用其用户界面向用户显示结果。

看看下面的插图。它显示了搜索引擎如何运作的总体视图。

搜索引擎

除了这些基本操作之外,搜索应用程序还可以提供管理用户界面,以帮助管理员根据用户配置文件控制搜索级别。搜索结果分析是任何搜索应用程序的另一个重要且高级的方面。

Apache Solr - 在 Windows 环境中

在本章中,我们将讨论如何在 Windows 环境中设置 Solr。要在 Windows 系统上安装 Solr,您需要按照以下步骤操作 -

  • 访问 Apache Solr 主页并单击下载按钮。

  • 选择其中一个镜像来获取 Apache Solr 的索引。从那里下载名为Solr-6.2.0.zip的文件。

  • 将文件从下载文件夹移动到所需目录并解压缩。

假设您下载了 Solr 文件并将其解压到 C 驱动器上。在这种情况下,您可以启动 Solr,如下图所示。

C盘中的Solr文件

要验证安装,请在浏览器中使用以下 URL。

http://本地主机:8983/

如果安装过程成功,您将看到 Apache Solr 用户界面的仪表板,如下所示。

索尔管理

设置Java环境

我们还可以使用 Java 库与 Apache Solr 进行通信;但在使用 Java API 访问 Solr 之前,您需要设置这些库的类路径。

设置类路径

在.bashrc文件中将类路径设置为 Solr 库。在任意编辑器中打开.bashrc,如下所示。

$ gedit ~/.bashrc

设置 Solr 库的类路径( HBase 中的lib文件夹),如下所示。

export CLASSPATH = $CLASSPATH://home/hadoop/Solr/lib/*

这是为了防止使用 Java API 访问 HBase 时出现“找不到类”异常。

Apache Solr - 在 Hadoop 上

Solr 可以与 Hadoop 一起使用。由于 Hadoop 处理大量数据,Solr 帮助我们从如此大的来源中找到所需的信息。在本节中,让我们了解如何在系统上安装 Hadoop。

下载Hadoop

下面给出了将 Hadoop 下载到您的系统上所需遵循的步骤。

步骤 1 - 转到 Hadoop 的主页。您可以使用链接 - www.hadoop.apache.org/。单击链接Releases,如以下屏幕截图中突出显示的那样。

Hadoop 主页

它将您重定向到Apache Hadoop 版本页面,其中包含各种 Hadoop 版本的源镜像和二进制文件的链接,如下所示 -

Hadoop 版本

步骤 2 - 选择最新版本的 Hadoop(在我们的教程中为 2.6.4)并单击其二进制链接。它将带您进入一个页面,其中提供了 Hadoop 二进制文件的镜像。单击这些镜像之一以下载 Hadoop。

从命令提示符下载 Hadoop

打开 Linux 终端并以超级用户身份登录。

$ su 
password: 

转到需要安装 Hadoop 的目录,并使用之前复制的链接将文件保存到该目录,如以下代码块所示。

# cd /usr/local 
# wget http://redrockdigimark.com/apachemirror/hadoop/common/hadoop-
2.6.4/hadoop-2.6.4.tar.gz

下载 Hadoop 后,使用以下命令将其解压缩。

# tar zxvf hadoop-2.6.4.tar.gz  
# mkdir hadoop 
# mv hadoop-2.6.4/* to hadoop/ 
# exit 

安装Hadoop

按照以下步骤以伪分布式模式安装Hadoop 。

第 1 步:设置 Hadoop

您可以通过将以下命令附加到~/.bashrc文件来设置 Hadoop 环境变量。

export HADOOP_HOME = /usr/local/hadoop export
HADOOP_MAPRED_HOME = $HADOOP_HOME export
HADOOP_COMMON_HOME = $HADOOP_HOME export 
HADOOP_HDFS_HOME = $HADOOP_HOME export 
YARN_HOME = $HADOOP_HOME 
export HADOOP_COMMON_LIB_NATIVE_DIR = $HADOOP_HOME/lib/native 
export PATH = $PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin 
export HADOOP_INSTALL = $HADOOP_HOME

接下来,将所有更改应用到当前正在运行的系统中。

$ source ~/.bashrc

第2步:Hadoop配置

您可以在“$HADOOP_HOME/etc/hadoop”位置找到所有 Hadoop 配置文件。需要根据您的 Hadoop 基础设施对这些配置文件进行更改。

$ cd $HADOOP_HOME/etc/hadoop

为了使用 Java 开发 Hadoop 程序,您必须通过将JAVA_HOME值替换为系统中 Java 的位置来重置hadoop-env.sh文件中的 Java 环境变量。

export JAVA_HOME = /usr/local/jdk1.7.0_71

以下是配置 Hadoop 时必须编辑的文件列表 -

  • 核心站点.xml
  • hdfs-site.xml
  • 纱线站点.xml
  • mapred-site.xml

核心站点.xml

core -site.xml文件包含 Hadoop 实例使用的端口号、为文件系统分配的内存、存储数据的内存限制以及读/写缓冲区的大小等信息。

打开 core-site.xml 并在 <configuration>、</configuration> 标记内添加以下属性。

<configuration> 
   <property>     
      <name>fs.default.name</name>     
      <value>hdfs://localhost:9000</value>   
   </property> 
</configuration> 

hdfs-site.xml

hdfs -site.xml文件包含本地文件系统的复制数据值、namenode路径和datanode路径等信息。它意味着您要存储 Hadoop 基础设施的地方。

让我们假设以下数据。

dfs.replication (data replication value) = 1  

(In the below given path /hadoop/ is the user name. 
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.) 
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode  

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.) 
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

打开此文件并在 <configuration>、</configuration> 标记内添加以下属性。

<configuration> 
   <property>     
      <name>dfs.replication</name>     
      <value>1</value>   
   </property>  
   
   <property>     
      <name>dfs.name.dir</name>     
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>   
   </property>  
   
   <property>     
      <name>dfs.data.dir</name>     
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>   
   </property> 
</configuration> 

注意- 在上面的文件中,所有属性值都是用户定义的,您可以根据您的 Hadoop 基础设施进行更改。

纱线站点.xml

该文件用于将yarn配置到Hadoop中。打开yarn-site.xml 文件并在此文件的 <configuration>、</configuration> 标记之间添加以下属性。

<configuration> 
   <property>     
      <name>yarn.nodemanager.aux-services</name>     
      <value>mapreduce_shuffle</value>   
   </property> 
</configuration> 

mapred-site.xml

该文件用于指定我们正在使用哪个 MapReduce 框架。默认情况下,Hadoop包含一个yarn-site.xml模板。首先,需要使用以下命令将文件从mapred-site,xml.template复制到mapred-site.xml文件。

$ cp mapred-site.xml.template mapred-site.xml

打开mapred-site.xml文件并在 <configuration>、</configuration> 标记内添加以下属性。

<configuration> 
   <property>     
      <name>mapreduce.framework.name</name>     
      <value>yarn</value>   
   </property> 
</configuration> 

验证 Hadoop 安装

以下步骤用于验证 Hadoop 安装。

第 1 步:名称节点设置

使用命令“hdfs namenode –format”设置 namenode,如下所示。

$ cd ~ 
$ hdfs namenode -format 

预期结果如下。

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG:   host = localhost/192.168.1.11 
STARTUP_MSG:   args = [-format] STARTUP_MSG:   version = 2.6.4 
... 
... 
10/24/14 21:30:56 INFO common.Storage: Storage directory 
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to retain 1 
images with txid >= 0 
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0 
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11 
************************************************************/ 

步骤 2:验证 Hadoop dfs

以下命令用于启动 Hadoop dfs。执行此命令将启动您的 Hadoop 文件系统。

$ start-dfs.sh 

预期输出如下 -

10/24/14 21:37:56 
Starting namenodes on [localhost] 
localhost: starting namenode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-namenode-localhost.out 
localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-datanode-localhost.out 
Starting secondary namenodes [0.0.0.0] 

第 3 步:验证 Yarn 脚本

以下命令用于启动 Yarn 脚本。执行此命令将启动您的 Yarn 恶魔。

$ start-yarn.sh 

预期输出如下 -

starting yarn daemons 
starting resourcemanager, logging to /home/hadoop/hadoop-2.6.4/logs/yarn-
hadoop-resourcemanager-localhost.out 
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.6.4/logs/yarn-hadoop-nodemanager-localhost.out 

第四步:在浏览器上访问Hadoop

访问Hadoop的默认端口号是50070。使用以下URL在浏览器上获取Hadoop服务。

http://本地主机:50070/

访问 Hadoop

在 Hadoop 上安装 Solr

按照下面给出的步骤下载并安装 Solr。

步骤1

单击以下链接打开 Apache Solr 的主页 - https://lucene.apache.org/solr/

Solr 主页

第2步

单击下载按钮(在上面的屏幕截图中突出显示)。单击后,您将被重定向到具有各种 Apache Solr 镜像的页面。选择一个镜像并单击它,这将重定向到一个页面,您可以在其中下载 Apache Solr 的源代码和二进制文件,如下面的屏幕截图所示。

阿帕奇镜像

步骤3

单击后,将在系统的下载文件夹中下载名为Solr-6.2.0.tqz的文件夹。提取下载文件夹的内容。

步骤4

在 Hadoop 主目录中创建一个名为 Solr 的文件夹,并将提取的文件夹的内容移至该文件夹,如下所示。

$ mkdir Solr 
$ cd Downloads 
$ mv Solr-6.2.0 /home/Hadoop/ 

确认

浏览Solr 主目录的bin文件夹并使用版本选项验证安装,如以下代码块所示。

$ cd bin/ 
$ ./Solr version 
6.2.0 

设置主页和路径

使用以下命令打开.bashrc文件 -

[Hadoop@localhost ~]$ source ~/.bashrc 

现在设置 Apache Solr 的主目录和路径目录,如下所示 -

export SOLR_HOME = /home/Hadoop/Solr  
export PATH = $PATH:/$SOLR_HOME/bin/

打开终端并执行以下命令 -

[Hadoop@localhost Solr]$ source ~/.bashrc

现在,您可以从任何目录执行Solr的命令。

Apache Solr - 架构

在本章中,我们将讨论 Apache Solr 的架构。下图显示了 Apache Solr 的架构框图。

建筑学

Solr 架构 ─ 构建块

以下是 Apache Solr 的主要构建块(组件) -

  • 请求处理程序- 我们发送到 Apache Solr 的请求由这些请求处理程序处理。这些请求可能是查询请求或索引更新请求。根据我们的要求,我们需要选择请求处理程序。为了将请求传递给 Solr,我们通常会将处理程序映射到某个 URI 端点,并由它来处理指定的请求。

  • 搜索组件- 搜索组件是 Apache Solr 中提供的一种搜索类型(功能)。它可能是拼写检查、查询、分面、命中突出显示等。这些搜索组件被注册为搜索处理程序。可以将多个组件注册到搜索处理程序。

  • 查询解析器- Apache Solr 查询解析器解析我们传递给 Solr 的查询并验证查询是否存在语法错误。解析查询后,它将它们转换为 Lucene 可以理解的格式。

  • 响应编写器- Apache Solr 中的响应编写器是为用户查询生成格式化输出的组件。Solr 支持 XML、JSON、CSV 等响应格式。对于每种类型的响应,我们都有不同的响应编写器。

  • 分析器/标记器- Lucene 以标记的形式识别数据。Apache Solr 分析内容,将其划分为令牌,并将这些令牌传递给 Lucene。Apache Solr 中的分析器检查字段文本并生成令牌流。标记器将分析器准备的标记流分解为标记。

  • 更新请求处理器- 每当我们向 Apache Solr 发送更新请求时,该请求都会通过一组插件(签名、日志记录、索引)运行,统称为更新请求处理器。该处理器负责修改,例如删除字段、添加字段等。

Apache Solr - 术语

在本章中,我们将尝试理解在 Solr 工作中经常使用的一些术语的真正含义。

通用术语

以下是所有类型的 Solr 设置中使用的通用术语列表 -

  • 实例- 就像tomcat 实例jetty 实例一样,该术语指的是在 JVM 内运行的应用程序服务器。Solr 的主目录提供对每个 Solr 实例的引用,其中可以配置一个或多个核心在每个实例中运行。

  • 核心- 在应用程序中运行多个索引时,您可以在每个实例中拥有多个核心,而不是多个实例每个实例都有一个核心。

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

  • 分片- 在分布式环境中,数据在多个 Solr 实例之间分区,其中每个数据块可以称为分。它包含整个索引的子集。

SolrCloud 术语

在前面的章节中,我们讨论了如何以独立模式安装 Apache Solr。请注意,我们还可以以分布式模式(云环境)安装 Solr,其中 Solr 以主从模式安装。在分布式模式下,索引在主服务器上创建,并将其复制到一台或多台从服务器。

与 Solr Cloud 相关的关键术语如下:

  • 节点- 在 Solr 云中,Solr 的每个实例都被视为一个节点

  • 集群- 环境中的所有节点组合在一起形成一个集群

  • 集合- 集群具有称为集合的逻辑索引。

  • 分片- 分片是具有一个或多个索引副本的集合的一部分。

  • 副本- 在 Solr Core 中,在节点中运行的分片副本称为副本

  • Leader - 它也是分片的副本,它将 Solr Cloud 的请求分发到其余副本。

  • Zookeeper - 这是 Solr Cloud 用于集中配置和协调、管理集群并选举领导者的 Apache 项目。

配置文件

Apache Solr 中的主要配置文件如下:

  • Solr.xml - 它是 $SOLR_HOME 目录中的文件,包含 Solr Cloud 相关信息。为了加载核心,Solr 会引用此文件,这有助于识别它们。

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

  • Schema.xml - 该文件包含整个架构以及字段和字段类型。

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

Apache Solr - 基本命令

启动Solr

安装 Solr 后,浏览到Solr 主目录中的bin文件夹并使用以下命令启动 Solr。

[Hadoop@localhost ~]$ cd   
[Hadoop@localhost ~]$ cd Solr/ 
[Hadoop@localhost Solr]$ cd bin/ 
[Hadoop@localhost bin]$ ./Solr start

此命令在后台启动 Solr,通过显示以下消息来侦听端口 8983。

Waiting up to 30 seconds to see Solr running on port 8983 [\]   
Started Solr server on port 8983 (pid = 6035). Happy searching!

在前台启动 Solr

如果您使用start命令启动Solr,那么 Solr 将在后台启动。相反,您可以使用–f 选项在前台启动 Solr 。

[Hadoop@localhost bin]$ ./Solr start –f  

5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/extraction/lib/xmlbeans-2.6.0.jar' to 
classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/dist/Solr-cell-6.2.0.jar' to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/carrot2-guava-18.0.jar' 
to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/attributes-binder1.3.1.jar' 
to classloader 
5823 INFO  (coreLoadExecutor-6-thread-2) [   ] o.a.s.c.SolrResourceLoader 
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/simple-xml-2.7.1.jar' 
to classloader 
…………………………………………………………………………………………………………………………………………………………………………………………………………… 
…………………………………………………………………………………………………………………………………………………………………………………………………. 
12901 INFO  (coreLoadExecutor-6-thread-1) [   x:Solr_sample] o.a.s.u.UpdateLog 
Took 24.0ms to seed version buckets with highest version 1546058939881226240 12902 
INFO  (coreLoadExecutor-6-thread-1) [   x:Solr_sample] 
o.a.s.c.CoreContainer registering core: Solr_sample 
12904 INFO  (coreLoadExecutor-6-thread-2) [   x:my_core] o.a.s.u.UpdateLog Took 
16.0ms to seed version buckets with highest version 1546058939894857728 
12904 INFO  (coreLoadExecutor-6-thread-2) [   x:my_core] o.a.s.c.CoreContainer 
registering core: my_core 

在另一个端口上启动 Solr

使用启动命令的-p选项,我们可以在另一个端口启动Solr,如以下代码块所示。

[Hadoop@localhost bin]$ ./Solr start -p 8984  

Waiting up to 30 seconds to see Solr running on port 8984 [-]   
Started Solr server on port 8984 (pid = 10137). Happy searching!

停止 Solr

您可以使用stop命令停止 Solr 。

$ ./Solr stop

此命令停止 Solr,并显示如下所示的消息。

Sending stop command to Solr running on port 8983 ... waiting 5 seconds to 
allow Jetty process 6035 to stop gracefully.

重启Solr

Solr 的重启命令使 Solr 停止 5 秒,然后再次启动。您可以使用以下命令重新启动 Solr -

./Solr restart 

此命令重新启动 Solr,显示以下消息 -

Sending stop command to Solr running on port 8983 ... waiting 5 seconds to 
allow Jetty process 6671 to stop gracefully. 
Waiting up to 30 seconds to see Solr running on port 8983 [|]  [/]   
Started Solr server on port 8983 (pid = 6906). Happy searching!

Solr ─ 帮助命令

Solr的help命令可以用来查看Solr提示符及其选项的使用情况。

[Hadoop@localhost bin]$ ./Solr -help  

Usage: Solr COMMAND OPTIONS        
   where COMMAND is one of: start, stop, restart, status, healthcheck, 
create, create_core, create_collection, delete, version, zk  
Standalone server example (start Solr running in the background on port 8984):  
   ./Solr start -p 8984  
SolrCloud example (start Solr running in SolrCloud mode using localhost:2181 
to connect to Zookeeper, with 1g max heap size and remote Java debug options enabled):  
   ./Solr start -c -m 1g -z localhost:2181 -a "-Xdebug -
   Xrunjdwp:transport = dt_socket,server = y,suspend = n,address = 1044"  
Pass -help after any COMMAND to see command-specific usage information,   
such as: ./Solr start -help or ./Solr stop -help 

Solr ─ 状态命令

Solr 的此状态命令可用于搜索和查找计算机上正在运行的 Solr 实例。它可以为您提供有关 Solr 实例的信息,例如版本、内存使用情况等。

您可以使用 status 命令检查 Solr 实例的状态,如下所示 -

[Hadoop@localhost bin]$ ./Solr status 

执行时,上述命令显示 Solr 的状态如下 -

Found 1 Solr nodes:   

Solr process 6906 running on port 8983 {   
   "Solr_home":"/home/Hadoop/Solr/server/Solr",   
   "version":"6.2.0 764d0f19151dbff6f5fcd9fc4b2682cf934590c5 - 
   mike - 2016-08-20 05:41:37",   
   "startTime":"2016-09-20T06:00:02.877Z",   
   "uptime":"0 days, 0 hours, 5 minutes, 14 seconds",   
   "memory":"30.6 MB (%6.2) of 490.7 MB"
} 

索尔管理

启动Apache Solr后,您可以通过以下URL访问Solr Web界面的主页。

Localhost:8983/Solr/

Solr Admin 的界面如下 -

Solr 管理界面

Apache Solr - 核心

Solr Core 是 Lucene 索引的运行实例,其中包含使用它所需的所有 Solr 配置文件。我们需要创建一个 Solr Core 来执行索引和分析等操作。

Solr 应用程序可能包含一个或多个核心。如有必要,Solr 应用程序中的两个核心可以相互通信。

创建核心

安装并启动Solr后,您可以连接到Solr的客户端(Web界面)。

创建核心

正如下面的屏幕截图中突出显示的那样,Apache Solr 中最初没有核心。现在,我们将了解如何在 Solr 中创建核心。

使用创建命令

创建核心的一种方法是使用create命令创建无模式核心,如下所示 -

[Hadoop@localhost bin]$ ./Solr create -c Solr_sample 

在这里,我们尝试在 Apache Solr 中创建一个名为Solr_sample的核心。此命令创建一个显示以下消息的核心。

Copying configuration to new core instance directory:
/home/Hadoop/Solr/server/Solr/Solr_sample 

Creating new core 'Solr_sample' using command: 
http://localhost:8983/Solr/admin/cores?action=CREATE&name=Solr_sample&instanceD 
ir = Solr_sample {  
   "responseHeader":{    
      "status":0,    
      "QTime":11550
   },  
   "core":"Solr_sample" 
} 

您可以在 Solr 中创建多个核心。在 Solr Admin 的左侧,您可以看到一个核心选​​择器,您可以在其中选择新创建的核心,如以下屏幕截图所示。

核心选择器

使用create_core命令

或者,您可以使用create_core命令创建核心。该命令有以下选项 -

–c核心名称 您要创建的核心的名称
-p端口名称 您要创建核心的端口
-dconf_dir _ 端口配置目录

让我们看看如何使用create_core命令。在这里,我们将尝试创建一个名为my_core的核心。

[Hadoop@localhost bin]$ ./Solr create_core -c my_core 

执行时,上述命令创建一个显示以下消息的核心 -

Copying configuration to new core instance directory: 
/home/Hadoop/Solr/server/Solr/my_core  

Creating new core 'my_core' using command: 
http://localhost:8983/Solr/admin/cores?action=CREATE&name=my_core&instanceD
ir = my_core {  
   "responseHeader":{  
      "status":0,  
      "QTime":1346
   },  
   "core":"my_core" 
}

删除核心

您可以使用 Apache Solr 的删除命令删除核心。假设 Solr 中有一个名为my_core的核心,如下面的屏幕截图所示。

删除核心

您可以使用删除命令删除该核心,方法是将核心的名称传递给该命令,如下所示 -

[Hadoop@localhost bin]$ ./Solr delete -c my_core 

执行上述命令时,指定的核心将被删除,并显示以下消息。

Deleting core 'my_core' using command: 
http://localhost:8983/Solr/admin/cores?action=UNLOAD&core = my_core&deleteIndex
   = true&deleteDataDir = true&deleteInstanceDir = true  {
   
   "responseHeader" :{    
      "status":0,    
      "QTime":170
   }
} 

您可以打开Solr的Web界面来验证core是否已被删除。

网页界面

Apache Solr - 索引数据

一般来说,索引是对文档或(其他实体)的系统排列。索引使用户能够在文档中查找信息。

  • 索引收集、解析和存储文档。

  • 建立索引是为了提高搜索查询的速度和性能,同时查找所需的文档。

Apache Solr 中的索引

在Apache Solr中,我们可以索引(添加、删除、修改)各种文档格式,例如xml、csv、pdf等。我们可以通过多种方式将数据添加到Solr索引中。

在本章中,我们将讨论索引 -

  • 使用 Solr Web 界面。
  • 使用任何客户端 API,如 Java、Python 等。
  • 使用后期工具

在本章中,我们将讨论如何使用各种接口(命令行、Web 界面和 Java 客户端 API)将数据添加到 Apache Solr 的索引中

使用 Post 命令添加文档

Solr在其bin/目录中有一个post命令。使用此命令,您可以在 Apache Solr 中索引各种格式的文件,例如 JSON、XML、CSV。

浏览Apache Solr的bin目录并执行post命令的-h选项,如以下代码块所示。

[Hadoop@localhost bin]$ cd $SOLR_HOME 
[Hadoop@localhost bin]$ ./post -h

执行上述命令后,您将获得post 命令的选项列表,如下所示。

Usage: post -c <collection> [OPTIONS] <files|directories|urls|-d [".."]> 
or post –help  
   collection name defaults to DEFAULT_SOLR_COLLECTION if not specified  
OPTIONS 
======= 
Solr options: 
   -url <base Solr update URL> (overrides collection, host, and port) 
   -host <host> (default: localhost) 
   -p or -port <port> (default: 8983) 
   -commit yes|no (default: yes)  

Web crawl options:  
   -recursive <depth> (default: 1) 
   -delay <seconds> (default: 10)  

Directory crawl options: 
   -delay <seconds> (default: 0)  

stdin/args options: 
   -type <content/type> (default: application/xml)  

Other options: 
   -filetypes <type>[,<type>,...] (default:   
   xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
   rtf,htm,html,txt,log) 
   -params "<key> = <value>[&<key> = <value>...]" (values must be 
   URL-encoded; these pass through to Solr update request) 
   -out yes|no (default: no; yes outputs Solr response to console) 
   -format Solr (sends application/json content as Solr commands 
   to /update instead of /update/json/docs)  

Examples: 
* JSON file:./post -c wizbang events.json 
* XML files: ./post -c records article*.xml 
* CSV file: ./post -c signals LATEST-signals.csv 
* Directory of files: ./post -c myfiles ~/Documents 
* Web crawl: ./post -c gettingstarted http://lucene.apache.org/Solr -recursive 1 -delay 1 
* Standard input (stdin): echo '{commit: {}}' | ./post -c my_collection -
type application/json -out yes –d 
* Data as string: ./post -c signals -type text/csv -out yes -d $'id,value\n1,0.47'

例子

假设我们有一个名为sample.csv的文件,其中包含以下内容(在bin目录中)。

学生卡 姓氏 电话 城市
001 拉吉夫 雷迪 9848022337 海得拉巴
002 悉达多 巴塔查亚 9848022338 加尔各答
003 拉杰什 卡纳 9848022339 德里
004 普雷蒂 阿加瓦尔 9848022330 浦那
005 特鲁普蒂 莫汉蒂 9848022336 布巴内斯瓦尔
006 阿卡纳 米斯拉 9848022335 钦奈

上面的数据集包含个人详细信息,例如学生 ID、名字、姓氏、电话和城市。数据集的 CSV 文件如下所示。在这里,您必须注意,您需要提及架构,记录其第一行。

id,    first_name,   last_name,   phone_no,      location 
001,   Pruthvi,      Reddy,       9848022337,    Hyderabad 
002,   kasyap,       Sastry,      9848022338,    Vishakapatnam 
003,   Rajesh,       Khanna,      9848022339,    Delhi 
004,   Preethi,      Agarwal,     9848022330,    Pune 
005,   Trupthi,      Mohanty,     9848022336,    Bhubaneshwar 
006,   Archana,      Mishra,      9848022335,    Chennai

您可以使用post命令在名为example_Solr的核心下索引此数据,如下所示 -

[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv 

执行上述命令时,给定文档在指定核心下建立索引,生成以下输出。

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = Solr_sample -Ddata = files 
org.apache.Solr.util.SimplePostTool sample.csv 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/Solr_sample/update... 
Entering auto mode. File endings considered are 
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log 
POSTing file sample.csv (text/csv) to [base] 
1 files indexed. 
COMMITting Solr index changes to 
http://localhost:8983/Solr/Solr_sample/update... 
Time spent: 0:00:00.228

使用以下 URL 访问 Solr Web UI 的主页 -

http://本地主机:8983/

选择核心Solr_sample。默认情况下,请求处理程序是/select,查询是“:”。不进行任何修改,单击页面底部的ExecuteQuery按钮。

索尔样本

执行查询时,您可以观察 JSON 格式(默认)的索引 CSV 文档的内容,如以下屏幕截图所示。

CSV 文档

注意- 以同样的方式,您可以索引其他文件格式,例如 JSON、XML、CSV 等。

使用 Solr Web 界面添加文档

您还可以使用 Solr 提供的 Web 界面来索引文档。让我们看看如何索引以下 JSON 文档。

[ 
   { 
      "id" : "001", 
      "name" : "Ram", 
      "age" : 53, 
      "Designation" : "Manager", 
      "Location" : "Hyderabad", 
   }, 
   { 
      "id" : "002", 
      "name" : "Robert", 
      "age" : 43, 
      "Designation" : "SR.Programmer", 
      "Location" : "Chennai", 
   }, 
   { 
      "id" : "003", 
      "name" : "Rahim", 
      "age" : 25, 
      "Designation" : "JR.Programmer", 
      "Location" : "Delhi", 
   } 
] 

步骤1

使用以下 URL 打开 Solr Web 界面 -

http://本地主机:8983/

第2步

选择核心Solr_sample。默认情况下,Request Handler、Common Within、Overwrite 和 Boost 字段的值分别为 /update、1000、true 和 1.0,如下图所示。

请求处理程序

现在,从 JSON、CSV、XML 等中选择您想要的文档格式。在文本区域中键入要索引的文档,然后单击“提交文档”按钮,如下面的屏幕截图所示。

提交文件

使用 Java 客户端 API 添加文档

以下是将文档添加到 Apache Solr 索引的 Java 程序。将此代码保存在名为AddingDocument.java 的文件中。

import java.io.IOException;  

import org.apache.Solr.client.Solrj.SolrClient; 
import org.apache.Solr.client.Solrj.SolrServerException; 
import org.apache.Solr.client.Solrj.impl.HttpSolrClient; 
import org.apache.Solr.common.SolrInputDocument; 

public class AddingDocument { 
   public static void main(String args[]) throws Exception { 
      //Preparing the Solr client 
      String urlString = "http://localhost:8983/Solr/my_core"; 
      SolrClient Solr = new HttpSolrClient.Builder(urlString).build();   
      
      //Preparing the Solr document 
      SolrInputDocument doc = new SolrInputDocument(); 
   
      //Adding fields to the document 
      doc.addField("id", "003"); 
      doc.addField("name", "Rajaman"); 
      doc.addField("age","34"); 
      doc.addField("addr","vishakapatnam"); 
         
      //Adding the document to Solr 
      Solr.add(doc);         
         
      //Saving the changes 
      Solr.commit(); 
      System.out.println("Documents added"); 
   } 
}

通过在终端中执行以下命令来编译上述代码 -

[Hadoop@localhost bin]$ javac AddingDocument 
[Hadoop@localhost bin]$ java AddingDocument 

执行上述命令后,您将得到以下输出。

Documents added

Apache Solr - 添加文档 (XML)

在上一章中,我们解释了如何将 JSON 和 .CSV 文件格式的数据添加到 Solr 中。在本章中,我们将演示如何使用 XML 文档格式在 Apache Solr 索引中添加数据。

样本数据

假设我们需要使用 XML 文件格式将以下数据添加到 Solr 索引中。

学生卡 电话 城市
001 拉吉夫 雷迪 9848022337 海得拉巴
002 悉达多 巴塔查亚 9848022338 加尔各答
003 拉杰什 卡纳 9848022339 德里
004 普雷蒂 阿加瓦尔 9848022330 浦那
005 特鲁普蒂 莫汉蒂 9848022336 布巴内斯瓦尔
006 阿卡纳 米斯拉 9848022335 钦奈

使用 XML 添加文档

要将上述数据添加到Solr索引中,我们需要准备一个XML文档,如下所示。将此文档保存在名为example.xml的文件中。

<add> 
   <doc> 
      <field name = "id">001</field> 
      <field name = "first name">Rajiv</field> 
      <field name = "last name">Reddy</field> 
      <field name = "phone">9848022337</field> 
      <field name = "city">Hyderabad</field> 
   </doc>  
   <doc> 
      <field name = "id">002</field> 
      <field name = "first name">Siddarth</field> 
      <field name = "last name">Battacharya</field> 
      <field name = "phone">9848022338</field> 
      <field name = "city">Kolkata</field> 
   </doc>  
   <doc> 
      <field name = "id">003</field> 
      <field name = "first name">Rajesh</field> 
      <field name = "last name">Khanna</field> 
      <field name = "phone">9848022339</field> 
      <field name = "city">Delhi</field> 
   </doc>  
   <doc> 
      <field name = "id">004</field> 
      <field name = "first name">Preethi</field> 
      <field name = "last name">Agarwal</field> 
      <field name = "phone">9848022330</field> 
      <field name = "city">Pune</field> 
   </doc>  
   <doc> 
      <field name = "id">005</field> 
      <field name = "first name">Trupthi</field> 
      <field name = "last name">Mohanthy</field> 
      <field name = "phone">9848022336</field> 
      <field name = "city">Bhuwaeshwar</field> 
   </doc> 
   <doc> 
      <field name = "id">006</field> 
      <field name = "first name">Archana</field> 
      <field name = "last name">Mishra</field> 
      <field name = "phone">9848022335</field> 
      <field name = "city">Chennai</field> 
   </doc> 
</add>

正如您所观察到的,为将数据添加到索引而编写的 XML 文件包含三个重要的标记,即 <add> </add>、<doc></doc> 和 <field></field>。

  • add - 这是用于将文档添加到索引的根标签。它包含一个或多个要添加的文档。

  • doc - 我们添加的文档应该包含在 <doc></doc> 标签内。该文档包含字段形式的数据。

  • field - 字段标签保存文档字段的名称和值。

准备好文档后,您可以使用上一章中讨论的任何方法将此文档添加到索引中。

假设 XML 文件存在于Solr 的bin目录中,并且要在名为my_core的核心中建立索引,那么您可以使用post工具将其添加到 Solr 索引中,如下所示 -

[Hadoop@localhost bin]$ ./post -c my_core sample.xml

执行上述命令后,您将得到以下输出。

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-
core6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool sample.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/update... 
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,
xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log 
POSTing file sample.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.201

确认

访问 Apache Solr Web 界面的主页并选择核心my_core尝试通过在文本区域q中传递查询“:”来检索所有文档并执行查询。执行时,您可以观察到所需的数据已添加到 Solr 索引中。

索尔指数

Apache Solr - 更新数据

使用 XML 更新文档

以下是用于更新现有文档中的字段的 XML 文件。将其保存在名为update.xml 的文件中。

<add>   
   <doc>     
      <field name = "id">001</field>     
      <field name = "first name" update = "set">Raj</field>     
      <field name = "last name" update = "add">Malhotra</field>     
      <field name = "phone" update = "add">9000000000</field>    
      <field name = "city" update = "add">Delhi</field>   
   </doc> 
</add>

正如您所观察到的,用于更新数据的 XML 文件与我们用于添加文档的文件一样。但唯一的区别是我们使用字段的update属性。

在我们的示例中,我们将使用上面的文档并尝试更新 id 为001的文档的字段。

假设XML文档存在于Solr的bin目录中。由于我们正在更新名为my_core的核心中存在的索引,因此您可以使用post工具进行更新,如下所示 -

[Hadoop@localhost bin]$ ./post -c my_core update.xml 

执行上述命令后,您将得到以下输出。

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool update.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/update... 
Entering auto mode. File endings considered are 
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log 
POSTing file update.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.159 

确认

访问 Apache Solr Web 界面的主页并选择 core 作为my_core尝试通过在文本区域q中传递查询“:”来检索所有文档并执行查询。执行时,您可以观察到文档已更新。

执行查询

使用 Java(客户端 API)更新文档

以下是将文档添加到 Apache Solr 索引的 Java 程序。将此代码保存在名为UpdatingDocument.java 的文件中。

import java.io.IOException;  

import org.apache.Solr.client.Solrj.SolrClient; 
import org.apache.Solr.client.Solrj.SolrServerException; 
import org.apache.Solr.client.Solrj.impl.HttpSolrClient; 
import org.apache.Solr.client.Solrj.request.UpdateRequest; 
import org.apache.Solr.client.Solrj.response.UpdateResponse;
import org.apache.Solr.common.SolrInputDocument;  

public class UpdatingDocument { 
   public static void main(String args[]) throws SolrServerException, IOException { 
      //Preparing the Solr client 
      String urlString = "http://localhost:8983/Solr/my_core"; 
      SolrClient Solr = new HttpSolrClient.Builder(urlString).build();   
      
      //Preparing the Solr document 
      SolrInputDocument doc = new SolrInputDocument(); 
   
      UpdateRequest updateRequest = new UpdateRequest();  
      updateRequest.setAction( UpdateRequest.ACTION.COMMIT, false, false);    
      SolrInputDocument myDocumentInstantlycommited = new SolrInputDocument();  
      
      myDocumentInstantlycommited.addField("id", "002"); 
      myDocumentInstantlycommited.addField("name", "Rahman"); 
      myDocumentInstantlycommited.addField("age","27"); 
      myDocumentInstantlycommited.addField("addr","hyderabad"); 
      
      updateRequest.add( myDocumentInstantlycommited);  
      UpdateResponse rsp = updateRequest.process(Solr); 
      System.out.println("Documents Updated"); 
   } 
}

通过在终端中执行以下命令来编译上述代码 -

[Hadoop@localhost bin]$ javac UpdatingDocument 
[Hadoop@localhost bin]$ java UpdatingDocument 

执行上述命令后,您将得到以下输出。

Documents updated 

Apache Solr - 删除文档

删除文档

要从 Apache Solr 的索引中删除文档,我们需要在 <delete></delete> 标记之间指定要删除的文档的 ID。

<delete>   
   <id>003</id>   
   <id>005</id> 
   <id>004</id> 
   <id>002</id> 
</delete> 

此处,此 XML 代码用于删除 ID 为003005的文档。将此代码保存在名为delete.xml的文件中。

如果你想从属于名为my_core的核心的索引中删除文档,那么你可以使用post工具发布delete.xml文件,如下所示。

[Hadoop@localhost bin]$ ./post -c my_core delete.xml 

执行上述命令后,您将得到以下输出。

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool delete.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/update... 
Entering auto mode. File endings considered are 
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log 
POSTing file delete.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.179 

确认

访问 Apache Solr Web 界面的主页并选择 core 作为my_core尝试通过在文本区域q中传递查询“:”来检索所有文档并执行查询。执行时,您可以观察到指定的文档被删除。

删除文档

删除字段

有时我们需要根据ID以外的字段来删除文档。例如,我们可能必须删除城市为 Chennai 的文档。

在这种情况下,您需要在 <query></query> 标记对中指定字段的名称和值。

<delete> 
   <query>city:Chennai</query> 
</delete>

保存为delete_field.xml ,并使用Solr的post工具对名为my_core的core进行删除操作。

[Hadoop@localhost bin]$ ./post -c my_core delete_field.xml 

执行上述命令时,它会产生以下输出。

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool delete_field.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/update... 
Entering auto mode. File endings considered are 
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log 
POSTing file delete_field.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.084 

确认

访问 Apache Solr Web 界面的主页并选择 core 作为my_core尝试通过在文本区域q中传递查询“:”来检索所有文档并执行查询。执行时,您可以观察到包含指定字段值对的文档被删除。

值对

删除所有文档

就像删除特定字段一样,如果要删除索引中的所有文档,只需在标签 <query></query> 之间传递符号“:”即可,如下所示。

<delete> 
   <query>*:*</query> 
</delete>

保存为delete_all.xml ,使用Solr的post工具对名为my_core的core进行删除操作。

[Hadoop@localhost bin]$ ./post -c my_core delete_all.xml

执行上述命令时,它会产生以下输出。

/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files 
org.apache.Solr.util.SimplePostTool deleteAll.xml 
SimplePostTool version 5.0.0 
Posting files to [base] url http://localhost:8983/Solr/my_core/update... 
Entering auto mode. File endings considered are 
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log 
POSTing file deleteAll.xml (application/xml) to [base] 
1 files indexed. 
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update... 
Time spent: 0:00:00.138

确认

访问 Apache Solr Web 界面的主页并选择 core 作为my_core尝试通过在文本区域q中传递查询“:”来检索所有文档并执行查询。执行时,您可以观察到包含指定字段值对的文档被删除。

删除的值对

使用Java(客户端API)删除所有文档

以下是将文档添加到 Apache Solr 索引的 Java 程序。将此代码保存在名为UpdatingDocument.java 的文件中。

import java.io.IOException;  

import org.apache.Solr.client.Solrj.SolrClient; 
import org.apache.Solr.client.Solrj.SolrServerException; 
import org.apache.Solr.client.Solrj.impl.HttpSolrClient; 
import org.apache.Solr.common.SolrInputDocument;  

public class DeletingAllDocuments { 
   public static void main(String args[]) throws SolrServerException, IOException {
      //Preparing the Solr client 
      String urlString = "http://localhost:8983/Solr/my_core"; 
      SolrClient Solr = new HttpSolrClient.Builder(urlString).build();   
      
      //Preparing the Solr document 
      SolrInputDocument doc = new SolrInputDocument();   
          
      //Deleting the documents from Solr 
      Solr.deleteByQuery("*");        
         
      //Saving the document 
      Solr.commit(); 
      System.out.println("Documents deleted"); 
   } 
}

通过在终端中执行以下命令来编译上述代码 -