Apache Solr 索引数据


一般来说, indexing 是系统地排列文件或(其他实体)。索引使用户能够定位文档中的信息。

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

  • 编制索引是为了在查找所需文档时提高搜索查询的速度和性能。

Apache Solr 中的索引


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

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

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

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

使用 Post 命令添加文档


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

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

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

执行上述命令后,你将获得一个选项列表 发布命令 , 如下所示。

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)

例子s: 
* 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'

例子

假设我们有一个名为 样本.csv 具有以下内容(在 bin 目录)。

学生卡 姓氏 Phone City
001 Rajiv Reddy 9848022337 海得拉巴
002 悉达多 巴塔查里亚 9848022338 Kolkata
003 Rajesh Khanna 9848022339 Delhi
004 Preethi Agarwal 9848022330 Pune
005 Trupthi Mohanty 9848022336 布巴内斯瓦尔
006 Archana Mishra 9848022335 Chennai

上述数据集包含学生 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

你可以在名为的核心下索引此数据 sample_Solr 使用 post 命令如下:

[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://localhost:8983/

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

Solr Sample

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

CSV Document

注意 :同理,可以索引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://localhost:8983/

步骤 2

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

Request Handler

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

Submit Document

使用 Java 客户端 API 添加文档


以下是将文档添加到 Apache Solr 索引的 Java 程序。将此代码保存在名称为的文件中 添加文档.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.Solr输入Document; 

public class AddingDocument { 
    public static void main(String args[]) throws Exception {
        // 准备 Solr 客户端
        String urlString = "http:// 本地主机:8983/Solr/my_core";
        SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
      
        // 准备 Solr 文档
        Solr输入Document doc = new Solr输入Document();
   
        // 向文档中添加字段
        doc.addField("id", "003");
        doc.addField("name", "Rajaman");
        doc.addField("age","34");
        doc.addField("addr","vishakapatnam");
         
        // 将文档添加到 Solr
        Solr.add(doc);
         
        // 保存更改
        Solr.commit();
        System.out.println("Documents added");
    }
}

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

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

执行上述命令后,你将获得以下输出。

Documents added