📅  最后修改于: 2020-12-02 05:45:47             🧑  作者: Mango
通常,索引是系统地安排文档或(其他实体)的。索引使用户可以定位文档中的信息。
索引收集,解析和存储文档。
进行索引可以提高查找所需文档时搜索查询的速度和性能。
在Apache Solr中,我们可以索引(添加,删除,修改)各种文档格式,例如xml,csv,pdf等。我们可以通过几种方式向Solr索引添加数据。
在本章中,我们将讨论索引-
在本章中,我们将讨论如何使用各种界面(命令行,Web界面和Java客户端API)将数据添加到Apache Solr的索引中
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 [OPTIONS]
or post –help
collection name defaults to DEFAULT_SOLR_COLLECTION if not specified
OPTIONS
=======
Solr options:
-url (overrides collection, host, and port)
-host (default: localhost)
-p or -port (default: 8983)
-commit yes|no (default: yes)
Web crawl options:
-recursive (default: 1)
-delay (default: 10)
Directory crawl options:
-delay (default: 0)
stdin/args options:
-type (default: application/xml)
Other options:
-filetypes [,,...] (default:
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log)
-params " = [& = ...]" (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目录中)。
Student ID | First Name | Lasst Name | Phone | City |
---|---|---|---|---|
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddharth | Bhattacharya | 9848022338 | Kolkata |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanty | 9848022336 | Bhubaneshwar |
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
您可以使用post命令在名为sample_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:// localhost:8983 /
选择核心Solr_sample 。默认情况下,请求处理程序为/ select ,查询为“:”。无需进行任何修改,请单击页面底部的ExecuteQuery按钮。
执行查询时,您可以观察JSON格式(默认)的CSV索引文档的内容,如以下屏幕截图所示。
注意-以相同的方式,您可以索引其他文件格式,例如JSON,XML,CSV等。
您也可以使用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",
}
]
使用以下URL打开Solr Web界面-
http:// localhost:8983 /
第2步
选择核心Solr_sample 。默认情况下,“请求处理程序”,“公共内部”,“覆盖”和“ Boost”字段的值分别为/ update,1000,true和1.0,如以下屏幕快照所示。
现在,从JSON,CSV,XML等中选择所需的文档格式。在文本区域中键入要建立索引的文档,然后单击Submit Document按钮,如以下屏幕截图所示。
以下是将文档添加到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