ApacheSolr-データのインデックス作成
一般に、 indexing文書または(他のエンティティ)を体系的に配置したものです。インデックスを作成すると、ユーザーはドキュメント内の情報を見つけることができます。
インデックス作成は、ドキュメントを収集、解析、および保存します。
インデックス作成は、必要なドキュメントを検索しながら検索クエリの速度とパフォーマンスを向上させるために行われます。
ApacheSolrでのインデックス作成
Apache Solrでは、xml、csv、pdfなどのさまざまなドキュメント形式にインデックスを付ける(追加、削除、変更)ことができます。いくつかの方法でSolrインデックスにデータを追加できます。
この章では、インデックス作成について説明します-
- SolrWebインターフェースの使用。
- Java、PythonなどのクライアントAPIのいずれかを使用します。
- を使用して post tool。
この章では、さまざまなインターフェース(コマンドライン、Webインターフェース、およびJavaクライアントAPI)を使用してApacheSolrのインデックスにデータを追加する方法について説明します。
Postコマンドを使用したドキュメントの追加
Solrには post その中のコマンド bin/ディレクトリ。このコマンドを使用すると、Apache SolrでJSON、XML、CSVなどのさまざまな形式のファイルにインデックスを付けることができます。
を閲覧する bin Apache Solrのディレクトリを実行し、 –h option 次のコードブロックに示すように、postコマンドの
[Hadoop@localhost bin]$ cd $SOLR_HOME
[Hadoop@localhost bin]$ ./post -h
上記のコマンドを実行すると、のオプションのリストが表示されます post command、以下に示すように。
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 | Preethi | アガルワル | 9848022330 | プネ |
005 | Trupthi | モハンティ | 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
このデータには、という名前のコアの下でインデックスを付けることができます 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を使用してSolrWebUIのホームページにアクセスします-
http://localhost:8983/
コアを選択します Solr_sample。デフォルトでは、リクエストハンドラは/selectクエリは「:」です。変更を加えずに、ExecuteQuery ページ下部のボタン。
クエリを実行すると、次のスクリーンショットに示すように、JSON形式(デフォルト)のインデックス付きCSVドキュメントの内容を確認できます。
Note −同様に、JSON、XML、CSVなどの他のファイル形式にインデックスを付けることができます。
SolrWebインターフェースを使用したドキュメントの追加
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を使用してSolrWebインターフェースを開きます-
http://localhost:8983/
Step 2
コアを選択します Solr_sample。次のスクリーンショットに示すように、デフォルトでは、フィールドRequest Handler、Common Within、Overwrite、およびBoostの値はそれぞれ/ update、1000、true、および1.0です。
次に、JSON、CSV、XMLなどから必要なドキュメント形式を選択します。インデックスを作成するドキュメントをテキスト領域に入力し、[ Submit Document 次のスクリーンショットに示すように、ボタン。
JavaクライアントAPIを使用したドキュメントの追加
以下は、ApacheSolrインデックスにドキュメントを追加する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