ApacheSolr-クイックガイド
Solr 構築に使用されるオープンソースの検索プラットフォームです search applications。それは上に建てられましたLucene(全文検索エンジン)。Solrは、エンタープライズ対応で、高速で、拡張性に優れています。Solrを使用して構築されたアプリケーションは洗練されており、高性能を提供します。
そうだった Yonik SeelyCNETネットワークの会社のWebサイトに検索機能を追加するために2004年にSolrを作成した人。2006年1月、Apache SoftwareFoundationの下でオープンソースプロジェクトになりました。最新バージョンのSolr6.0は、並列SQLクエリの実行をサポートする2016年にリリースされました。
SolrはHadoopと一緒に使用できます。Hadoopは大量のデータを処理するため、Solrはそのような大規模なソースから必要な情報を見つけるのに役立ちます。Solrは検索だけでなく、保管目的にも使用できます。他のNoSQLデータベースと同様に、non-relational data storage そして processing technology。
つまり、Solrは、大量のテキスト中心のデータを検索するように最適化された、スケーラブルですぐにデプロイできる検索/ストレージエンジンです。
ApacheSolrの機能
Solrは、LuceneのJavaAPIをラップアラウンドしたものです。したがって、Solrを使用すると、Luceneのすべての機能を活用できます。Solrの最も顕著な機能のいくつかを見てみましょう-
Restful APIs− Solrと通信するために、Javaプログラミングスキルを持っている必要はありません。代わりに、RESTfulサービスを使用して通信できます。XML、JSON、.CSVなどのファイル形式でSolrにドキュメントを入力し、同じファイル形式で結果を取得します。
Full text search − Solrは、トークン、フレーズ、スペルチェック、ワイルドカード、オートコンプリートなど、全文検索に必要なすべての機能を提供します。
Enterprise ready −組織のニーズに応じて、Solrは、スタンドアロン、分散、クラウドなど、あらゆる種類のシステム(大小)にデプロイできます。
Flexible and Extensible − Javaクラスを拡張し、それに応じて構成することで、Solrのコンポーネントを簡単にカスタマイズできます。
NoSQL database − Solrは、クラスターに沿って検索タスクを分散できるビッグデータスケールのNOSQLデータベースとしても使用できます。
Admin Interface − Solrは、使いやすく、ユーザーフレンドリーで、機能を備えたユーザーインターフェースを提供します。これを使用して、ログの管理、ドキュメントの追加、削除、更新、検索など、考えられるすべてのタスクを実行できます。
Highly Scalable − HadoopでSolrを使用しているときに、レプリカを追加することで容量を拡張できます。
Text-Centric and Sorted by Relevance − Solrは主にテキストドキュメントの検索に使用され、結果はユーザーのクエリとの関連性に従って順番に配信されます。
Luceneとは異なり、ApacheSolrでの作業中にJavaプログラミングスキルを持っている必要はありません。Luceneが提供していない、オートコンプリートを備えた検索ボックスを構築するための、すぐにデプロイできるすばらしいサービスを提供します。Solrを使用すると、大規模(ビッグデータ)アプリケーション向けにインデックスをスケーリング、配布、および管理できます。
検索アプリケーションのLucene
Luceneは、シンプルでありながら強力なJavaベースの検索ライブラリです。これは、検索機能を追加するために任意のアプリケーションで使用できます。Luceneは、事実上あらゆる種類のテキストのインデックス作成と検索に使用されるスケーラブルで高性能なライブラリです。Luceneライブラリは、次のような検索アプリケーションに必要なコア操作を提供します。Indexing そして Searching。
膨大な量のデータを含むWebポータルがある場合、膨大なデータプールから関連情報を抽出するためにポータルに検索エンジンが必要になる可能性があります。Luceneは、あらゆる検索アプリケーションの中心として機能し、インデックス作成と検索に関連する重要な操作を提供します。
検索エンジンは、Webページ、ニュースグループ、プログラム、画像などのインターネットリソースの巨大なデータベースを指します。これは、ワールドワイドウェブ上の情報を見つけるのに役立ちます。
ユーザーは、キーワードまたはフレーズの形式で検索エンジンにクエリを渡すことにより、情報を検索できます。次に、検索エンジンはデータベースを検索し、関連するリンクをユーザーに返します。
検索エンジンのコンポーネント
一般的に、検索エンジンには以下の3つの基本的なコンポーネントがあります。
Web Crawler −Webクローラーは別名 spiders または bots。これは、Webをトラバースして情報を収集するソフトウェアコンポーネントです。
Database−Web上のすべての情報はデータベースに保存されます。それらには膨大な量のWebリソースが含まれています。
Search Interfaces−このコンポーネントは、ユーザーとデータベース間のインターフェースです。これは、ユーザーがデータベースを検索するのに役立ちます。
検索エンジンはどのように機能しますか?
以下の操作の一部またはすべてを実行するには、検索アプリケーションが必要です。
ステップ | 題名 | 説明 |
---|---|---|
1 |
生のコンテンツを取得する |
検索アプリケーションの最初のステップは、検索が実行されるターゲットコンテンツを収集することです。 |
2 |
ドキュメントを作成する |
次のステップは、検索アプリケーションが簡単に理解して解釈できる生のコンテンツからドキュメントを作成することです。 |
3 |
ドキュメントを分析する |
インデックス作成を開始する前に、ドキュメントを分析する必要があります。 |
4 |
ドキュメントのインデックス作成 |
ドキュメントが作成および分析されたら、次のステップは、ドキュメントのコンテンツ全体ではなく、特定のキーに基づいてこのドキュメントを取得できるように、ドキュメントにインデックスを付けることです。 索引付けは、本の最後にある索引に似ており、一般的な単語がページ番号とともに表示されるため、本全体を検索する代わりに、これらの単語をすばやく追跡できます。 |
5 |
検索用のユーザーインターフェイス |
インデックスのデータベースの準備ができたら、アプリケーションは検索操作を実行できます。ユーザーが検索を行えるようにするには、アプリケーションは、ユーザーがテキストを入力して検索プロセスを開始できるユーザーインターフェイスを提供する必要があります。 |
6 |
ビルドクエリ |
ユーザーがテキストの検索を要求すると、アプリケーションはそのテキストを使用してクエリオブジェクトを準備する必要があります。これを使用して、インデックスデータベースに問い合わせ、関連する詳細を取得できます。 |
7 |
検索クエリ |
クエリオブジェクトを使用して、インデックスデータベースがチェックされ、関連する詳細とコンテンツドキュメントが取得されます。 |
8 |
結果をレンダリングする |
必要な結果を受け取ったら、アプリケーションはユーザーインターフェイスを使用して結果をユーザーに表示する方法を決定する必要があります。 |
次の図を見てください。これは、検索エンジンがどのように機能するかについての全体像を示しています。
これらの基本的な操作とは別に、検索アプリケーションは、管理者がユーザープロファイルに基づいて検索のレベルを制御するのに役立つ管理ユーザーインターフェイスを提供することもできます。検索結果の分析は、検索アプリケーションのもう1つの重要で高度な側面です。
この章では、Windows環境でSolrをセットアップする方法について説明します。WindowsシステムにSolrをインストールするには、以下の手順に従う必要があります-
Apache Solrのホームページにアクセスし、ダウンロードボタンをクリックします。
ミラーの1つを選択して、ApacheSolrのインデックスを取得します。そこからという名前のファイルをダウンロードしますSolr-6.2.0.zip。
からファイルを移動します downloads folder 必要なディレクトリに移動し、解凍します。
SolrファイルをダウンロードしてCドライブに抽出したとします。このような場合、次のスクリーンショットに示すようにSolrを起動できます。
インストールを確認するには、ブラウザで次のURLを使用します。
http://localhost:8983/
インストールプロセスが成功すると、以下に示すように、ApacheSolrユーザーインターフェイスのダッシュボードが表示されます。
Java環境の設定
Javaライブラリを使用してApacheSolrと通信することもできます。ただし、Java APIを使用してSolrにアクセスする前に、これらのライブラリのクラスパスを設定する必要があります。
クラスパスの設定
をセットする classpath のSolrライブラリへ .bashrcファイル。開いた.bashrc 以下に示すように、いずれかのエディターで。
$ gedit ~/.bashrc
Solrライブラリのクラスパスを設定します(lib 以下に示すように、HBaseのフォルダー)。
export CLASSPATH = $CLASSPATH://home/hadoop/Solr/lib/*
これは、JavaAPIを使用してHBaseにアクセスする際の「クラスが見つかりません」という例外を防ぐためです。
SolrはHadoopと一緒に使用できます。Hadoopは大量のデータを処理するため、Solrはそのような大規模なソースから必要な情報を見つけるのに役立ちます。このセクションでは、システムにHadoopをインストールする方法を理解しましょう。
Hadoopのダウンロード
以下に、Hadoopをシステムにダウンロードするための手順を示します。
Step 1−Hadoopのホームページに移動します。リンクを使用できます-www.hadoop.apache.org/。リンクをクリックしてくださいReleases、次のスクリーンショットで強調表示されているように。
にリダイレクトされます Apache Hadoop Releases 次のように、Hadoopのさまざまなバージョンのソースファイルとバイナリファイルのミラーへのリンクを含むページ-
Step 2 − Hadoopの最新バージョン(チュートリアルでは2.6.4)を選択し、 binary link。Hadoopバイナリのミラーが利用可能なページに移動します。これらのミラーの1つをクリックして、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を設定する
次のコマンドをに追加することで、Hadoop環境変数を設定できます。 ~/.bashrc ファイル。
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構成ファイルは、「$ HADOOP_HOME / etc / hadoop」の場所にあります。Hadoopインフラストラクチャに応じて、これらの構成ファイルを変更する必要があります。
$ cd $HADOOP_HOME/etc/hadoop
JavaでHadoopプログラムを開発するには、Java環境変数をリセットする必要があります。 hadoop-env.sh 置き換えることによってファイル JAVA_HOME システム内のJavaの場所による値。
export JAVA_HOME = /usr/local/jdk1.7.0_71
以下は、Hadoopを構成するために編集する必要のあるファイルのリストです。
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
core-site.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>
Note −上記のファイルでは、すべてのプロパティ値がユーザー定義であり、Hadoopインフラストラクチャに応じて変更を加えることができます。
yarn-site.xml
このファイルは、Hadoopにyarnを構成するために使用されます。ヤーンサイト.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:ノードのセットアップに名前を付ける
次のようにコマンド「hdfsnamenode–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:Hadoopdfsを確認する
次のコマンドを使用して、Hadoopdfsを開始します。このコマンドを実行すると、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デーモンが起動します。
$ 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
ステップ4:ブラウザーでHadoopにアクセスする
Hadoopにアクセスするためのデフォルトのポート番号は50070です。ブラウザーでHadoopサービスを取得するには、次のURLを使用します。
http://localhost:50070/
HadoopへのSolrのインストール
以下の手順に従って、Solrをダウンロードしてインストールします。
ステップ1
次のリンクをクリックして、ApacheSolrのホームページを開きます- https://lucene.apache.org/solr/
ステップ2
クリック download button(上のスクリーンショットで強調表示されています)。クリックすると、ApacheSolrのさまざまなミラーがあるページにリダイレクトされます。ミラーを選択してクリックすると、次のスクリーンショットに示すように、ApacheSolrのソースファイルとバイナリファイルをダウンロードできるページにリダイレクトされます。
ステップ3
クリックすると、という名前のフォルダ Solr-6.2.0.tqzシステムのダウンロードフォルダにダウンロードされます。ダウンロードしたフォルダの内容を抽出します。
ステップ4
以下に示すように、HadoopホームディレクトリにSolrという名前のフォルダーを作成し、抽出したフォルダーの内容をそのフォルダーに移動します。
$ mkdir Solr
$ cd Downloads
$ mv Solr-6.2.0 /home/Hadoop/
検証
を閲覧する bin Solrホームディレクトリのフォルダを使用して、インストールを確認します。 version 次のコードブロックに示すように、オプション。
$ cd bin/
$ ./Solr version
6.2.0
家と道を設定する
を開きます .bashrc 次のコマンドを使用してファイル-
[Hadoop@localhost ~]$ source ~/.bashrc
次に、ApacheSolrのホームディレクトリとパスディレクトリを次のように設定します。
export SOLR_HOME = /home/Hadoop/Solr
export PATH = $PATH:/$SOLR_HOME/bin/
ターミナルを開き、次のコマンドを実行します-
[Hadoop@localhost Solr]$ source ~/.bashrc
これで、任意のディレクトリからSolrのコマンドを実行できます。
この章では、ApacheSolrのアーキテクチャーについて説明します。次の図は、ApacheSolrのアーキテクチャーのブロック図を示しています。
Solrアーキテクチャ─ビルディングブロック
以下は、Apache Solrの主要な構成要素(コンポーネント)です。
Request Handler− Apache Solrに送信するリクエストは、これらのリクエストハンドラーによって処理されます。要求は、クエリ要求またはインデックス更新要求である可能性があります。要件に基づいて、リクエストハンドラを選択する必要があります。Solrにリクエストを渡すために、通常、ハンドラーを特定のURIエンドポイントにマップし、指定されたリクエストがそれによって処理されます。
Search Component−検索コンポーネントは、Apache Solrで提供される検索のタイプ(機能)です。スペルチェック、クエリ、ファセット、ヒットハイライトなどが考えられます。これらの検索コンポーネントは次のように登録されています。search handlers。複数のコンポーネントを検索ハンドラーに登録できます。
Query Parser− Apache Solrクエリパーサーは、Solrに渡すクエリを解析し、構文エラーがないかクエリを検証します。クエリを解析した後、Luceneが理解できる形式に変換します。
Response Writer− Apache Solrの応答ライターは、ユーザークエリ用にフォーマットされた出力を生成するコンポーネントです。Solrは、XML、JSON、CSVなどの応答形式をサポートしています。応答のタイプごとに異なる応答ライターがあります。
Analyzer/tokenizer− Luceneは、トークンの形式でデータを認識します。Apache Solrはコンテンツを分析してトークンに分割し、これらのトークンをLuceneに渡します。Apache Solrのアナライザーは、フィールドのテキストを調べて、トークン・ストリームを生成します。トークナイザーは、アナライザーによって準備されたトークンストリームをトークンに分割します。
Update Request Processor −更新リクエストをApache Solrに送信するときはいつでも、リクエストはプラグインのセット(署名、ロギング、インデックス作成)を介して実行されます。 update request processor。このプロセッサは、フィールドの削除、フィールドの追加などの変更を担当します。
この章では、Solrでの作業中に頻繁に使用されるいくつかの用語の本当の意味を理解しようとします。
一般的な用語
以下は、すべてのタイプのSolrセットアップで使用される一般的な用語のリストです。
Instance −ちょうど tomcat instance または jetty instance、この用語は、JVM内で実行されるアプリケーションサーバーを指します。Solrのホームディレクトリは、これらのSolrインスタンスのそれぞれへの参照を提供します。ここで、1つ以上のコアを各インスタンスで実行するように構成できます。
Core −アプリケーションで複数のインデックスを実行しているときに、それぞれが1つのコアを持つ複数のインスタンスではなく、各インスタンスに複数のコアを持つことができます。
Home − $ SOLR_HOMEという用語は、コアとそのインデックス、構成、および依存関係に関するすべての情報を含むホームディレクトリを指します。
Shard −分散環境では、データは複数のSolrインスタンス間で分割され、データの各チャンクは Shard。インデックス全体のサブセットが含まれています。
SolrCloudの用語
前の章では、ApacheSolrをスタンドアロンモードでインストールする方法について説明しました。Solrがマスタースレーブパターンでインストールされる分散モード(クラウド環境)でSolrをインストールすることもできることに注意してください。分散モードでは、インデックスはマスターサーバー上に作成され、1つ以上のスレーブサーバーに複製されます。
SolrCloudに関連する重要な用語は次のとおりです-
Node − Solrクラウドでは、Solrの各単一インスタンスは node。
Cluster −環境のすべてのノードを組み合わせて、 cluster。
Collection −クラスターには、と呼ばれる論理インデックスがあります。 collection。
Shard −シャードは、インデックスのレプリカが1つ以上あるコレクションの一部です。
Replica − Solr Coreでは、ノードで実行されるシャードのコピーは、 replica。
Leader −これはシャードのレプリカでもあり、SolrCloudのリクエストを残りのレプリカに分散します。
Zookeeper −これは、Solr Cloudが一元化された構成と調整、クラスターの管理、およびリーダーの選出に使用するApacheプロジェクトです。
構成ファイル
ApacheSolrの主な設定ファイルは次のとおりです-
Solr.xml−これは、SolrCloud関連情報を含む$ SOLR_HOMEディレクトリー内のファイルです。コアをロードするために、Solrはこのファイルを参照します。これはコアの識別に役立ちます。
Solrconfig.xml −このファイルには、要求の処理と応答のフォーマットに関連する定義とコア固有の構成、およびインデックス作成、構成、メモリの管理、コミットの作成が含まれています。
Schema.xml −このファイルには、スキーマ全体とフィールドおよびフィールドタイプが含まれています。
Core.properties−このファイルには、コアに固有の構成が含まれています。それはのために参照されますcore discovery、コアの名前とデータディレクトリのパスが含まれているため。これは任意のディレクトリで使用でき、その後は次のように扱われます。core directory。
Solrの開始
Solrをインストールした後、 bin Solrホームディレクトリのフォルダに移動し、次のコマンドを使用して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を開始する
始めたら Solr を使用して startコマンドを実行すると、Solrがバックグラウンドで起動します。代わりに、を使用してフォアグラウンドでSolrを開始できます。–f option。
[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 option の start 次のコードブロックに示すように、コマンドを実行すると、別のポートで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の停止
Solrを停止するには、 stop コマンド。
$ ./Solr stop
このコマンドはSolrを停止し、以下に示すようなメッセージを表示します。
Sending stop command to Solr running on port 8983 ... waiting 5 seconds to
allow Jetty process 6035 to stop gracefully.
Solrを再起動します
ザ・ restartSolrのコマンドは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─ヘルプコマンド
ザ・ help Solrのコマンドを使用して、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─statusコマンド
この statusSolrのコマンドを使用して、コンピューター上で実行中の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"
}
Solr管理者
Apache Solrを起動した後、のホームページにアクセスできます。 Solr web interface 以下のURLを使用してください。
Localhost:8983/Solr/
SolrAdminのインターフェースは次のように表示されます-
Solr Coreは、Luceneインデックスの実行中のインスタンスであり、それを使用するために必要なすべてのSolr構成ファイルが含まれています。インデックス作成や分析などの操作を実行するには、Solrコアを作成する必要があります。
Solrアプリケーションには、1つまたは複数のコアが含まれる場合があります。必要に応じて、Solrアプリケーションの2つのコアが相互に通信できます。
コアの作成
Solrをインストールして起動すると、Solrのクライアント(Webインターフェース)に接続できます。
次のスクリーンショットで強調表示されているように、最初はApacheSolrにコアはありません。ここで、Solrでコアを作成する方法を見ていきます。
createコマンドの使用
コアを作成する1つの方法は、 schema-less core を使用して create 以下に示すように、コマンド-
[Hadoop@localhost bin]$ ./Solr create -c Solr_sample
ここでは、という名前のコアを作成しようとしています Solr_sampleApacheSolrで。このコマンドは、次のメッセージを表示するコアを作成します。
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の左側に、core selector 次のスクリーンショットに示すように、ここで新しく作成されたコアを選択できます。
create_coreコマンドの使用
または、を使用してコアを作成することもできます create_coreコマンド。このコマンドには次のオプションがあります-
–c core_name | 作成したいコアの名前 |
-p port_name | コアを作成するポート |
-d conf_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"
}
コアの削除
を使用してコアを削除できます deleteApacheSolrのコマンド。名前の付いたコアがあるとしましょうmy_core 次のスクリーンショットに示すように、Solrで。
このコアは、を使用して削除できます。 delete 次のように、コアの名前をこのコマンドに渡すことによってコマンドを実行します-
[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インターフェースを開いて、コアが削除されているかどうかを確認できます。
一般に、 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
前の章では、JSONおよび.CSVファイル形式のデータをSolrに追加する方法について説明しました。この章では、XMLドキュメント形式を使用してApacheSolrインデックスにデータを追加する方法を示します。
サンプルデータ
XMLファイル形式を使用してSolrインデックスに次のデータを追加する必要があるとします。
学生証 | ファーストネーム | 苗字 | 電話 | 市 |
---|---|---|---|---|
001 | ラジブ | レディ | 9848022337 | ハイデラバード |
002 | シッダールス | バタチャリヤ | 9848022338 | コルカタ |
003 | ラジェッシュ | カンナ | 9848022339 | デリー |
004 | Preethi | アガルワル | 9848022330 | プネ |
005 | Trupthi | モハンティ | 9848022336 | ブバネシュワール |
006 | アルカナ | ミシュラ | 9848022335 | チェンナイ |
XMLを使用したドキュメントの追加
上記のデータをSolrインデックスに追加するには、以下に示すようにXMLドキュメントを準備する必要があります。このドキュメントを名前のファイルに保存しますsample.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>という3つの重要なタグが含まれています。
add−これはドキュメントをインデックスに追加するためのルートタグです。追加される1つ以上のドキュメントが含まれています。
doc−追加するドキュメントは、<doc> </ doc>タグで囲む必要があります。このドキュメントには、フィールド形式のデータが含まれています。
field −フィールドタグは、ドキュメントのフィールドの名前と値を保持します。
ドキュメントを準備した後、前の章で説明した手段のいずれかを使用して、このドキュメントをインデックスに追加できます。
XMLファイルがに存在するとします。 bin Solrのディレクトリであり、名前の付いたコアでインデックスが作成されます。 my_core、次に、を使用してSolrインデックスに追加できます。 post 次のようなツール-
[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インデックスに追加されていることがわかります。
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ドキュメントがに存在するとします binSolrのディレクトリ。名前の付いたコアに存在するインデックスを更新しているので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インターフェースのホームページにアクセスし、コアを次のように選択します。 my_core。テキスト領域にクエリ「:」を渡して、すべてのドキュメントを取得してみてくださいqクエリを実行します。実行すると、ドキュメントが更新されていることがわかります。
Javaを使用したドキュメントの更新(クライアントAPI)
以下は、ApacheSolrインデックスにドキュメントを追加する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のインデックスからドキュメントを削除するには、削除するドキュメントのIDを<delete> </ delete>タグの間に指定する必要があります。
<delete>
<id>003</id>
<id>005</id>
<id>004</id>
<id>002</id>
</delete>
ここで、このXMLコードは、IDを持つドキュメントを削除するために使用されます 003 そして 005。このコードを名前のファイルに保存しますdelete.xml。
名前の付いたコアに属するインデックスからドキュメントを削除する場合 my_core、その後、投稿することができます delete.xml を使用してファイル post 以下に示すように、ツール。
[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インターフェースのホームページにアクセスし、コアを次のように選択します。 my_core。テキスト領域にクエリ「:」を渡して、すべてのドキュメントを取得してみてくださいqクエリを実行します。実行すると、指定したドキュメントが削除されていることがわかります。
フィールドの削除
ID以外のフィールドに基づいてドキュメントを削除する必要がある場合があります。たとえば、都市がチェンナイであるドキュメントを削除する必要がある場合があります。
このような場合、<query> </ query>タグペア内のフィールドの名前と値を指定する必要があります。
<delete>
<query>city:Chennai</query>
</delete>
名前を付けて保存 delete_field.xml 名前の付いたコアで削除操作を実行します my_core を使用して post Solrのツール。
[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インターフェースのホームページにアクセスし、コアを次のように選択します。 my_core。テキスト領域にクエリ「:」を渡して、すべてのドキュメントを取得してみてくださいqクエリを実行します。実行すると、指定したフィールドと値のペアを含むドキュメントが削除されていることがわかります。
すべてのドキュメントを削除する
特定のフィールドを削除するのと同じように、インデックスからすべてのドキュメントを削除する場合は、次に示すように、タグ<query> </ query>の間に記号「:」を渡す必要があります。
<delete>
<query>*:*</query>
</delete>
名前を付けて保存 delete_all.xml 名前の付いたコアで削除操作を実行します my_core を使用して post Solrのツール。
[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インターフェースのホームページにアクセスし、コアを次のように選択します。 my_core。テキスト領域にクエリ「:」を渡して、すべてのドキュメントを取得してみてくださいqクエリを実行します。実行すると、指定したフィールドと値のペアを含むドキュメントが削除されていることがわかります。
Java(クライアントAPI)を使用してすべてのドキュメントを削除する
以下は、ApacheSolrインデックスにドキュメントを追加する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");
}
}
ターミナルで次のコマンドを実行して、上記のコードをコンパイルします-
[Hadoop@localhost bin]$ javac DeletingAllDocuments
[Hadoop@localhost bin]$ java DeletingAllDocuments
上記のコマンドを実行すると、次の出力が得られます。
Documents deleted
この章では、JavaクライアントAPIを使用してデータを取得する方法について説明します。名前の付いた.csvドキュメントがあるとします。sample.csv 以下の内容で。
001,9848022337,Hyderabad,Rajiv,Reddy
002,9848022338,Kolkata,Siddarth,Battacharya
003,9848022339,Delhi,Rajesh,Khanna
このデータには、という名前のコアの下でインデックスを付けることができます sample_Solr を使用して post コマンド。
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
以下は、ApacheSolrインデックスにドキュメントを追加するJavaプログラムです。このコードを名前付きのファイルに保存しますRetrievingData.java。
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrQuery;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.response.QueryResponse;
import org.apache.Solr.common.SolrDocumentList;
public class RetrievingData {
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 Solr query
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
//Adding the field to be retrieved
query.addField("*");
//Executing the query
QueryResponse queryResponse = Solr.query(query);
//Storing the results of the query
SolrDocumentList docs = queryResponse.getResults();
System.out.println(docs);
System.out.println(docs.get(0));
System.out.println(docs.get(1));
System.out.println(docs.get(2));
//Saving the operations
Solr.commit();
}
}
ターミナルで次のコマンドを実行して、上記のコードをコンパイルします-
[Hadoop@localhost bin]$ javac RetrievingData
[Hadoop@localhost bin]$ java RetrievingData
上記のコマンドを実行すると、次の出力が得られます。
{numFound = 3,start = 0,docs = [SolrDocument{id=001, phone = [9848022337],
city = [Hyderabad], first_name = [Rajiv], last_name = [Reddy],
_version_ = 1547262806014820352}, SolrDocument{id = 002, phone = [9848022338],
city = [Kolkata], first_name = [Siddarth], last_name = [Battacharya],
_version_ = 1547262806026354688}, SolrDocument{id = 003, phone = [9848022339],
city = [Delhi], first_name = [Rajesh], last_name = [Khanna],
_version_ = 1547262806029500416}]}
SolrDocument{id = 001, phone = [9848022337], city = [Hyderabad], first_name = [Rajiv],
last_name = [Reddy], _version_ = 1547262806014820352}
SolrDocument{id = 002, phone = [9848022338], city = [Kolkata], first_name = [Siddarth],
last_name = [Battacharya], _version_ = 1547262806026354688}
SolrDocument{id = 003, phone = [9848022339], city = [Delhi], first_name = [Rajesh],
last_name = [Khanna], _version_ = 1547262806029500416}
データの保存に加えて、Apache Solrは、必要に応じてデータをクエリバックする機能も提供します。Solrは、そこに格納されているデータを照会するために使用できる特定のパラメーターを提供します。
次の表に、ApacheSolrで使用できるさまざまなクエリパラメーターを示します。
パラメータ | 説明 |
---|---|
q | これはApacheSolrのメインクエリパラメーターであり、ドキュメントはこのパラメーターの用語との類似性によってスコアリングされます。 |
fq | このパラメーターは、Apache Solrのフィルター・クエリを表し、結果セットをこのフィルターに一致するドキュメントに制限します。 |
開始 | startパラメーターは、ページ結果の開始オフセットを表します。このパラメーターのデフォルト値は0です。 |
行 | このパラメーターは、ページごとに取得されるドキュメントの数を表します。このパラメーターのデフォルト値は10です。 |
ソート | このパラメーターは、クエリの結果をソートするための基準となる、コンマで区切られたフィールドのリストを指定します。 |
fl | このパラメーターは、結果セット内の各ドキュメントに対して返されるフィールドのリストを指定します。 |
wt | このパラメーターは、結果を表示したい応答ライターのタイプを表します。 |
これらすべてのパラメーターは、ApacheSolrを照会するためのオプションとして表示できます。ApacheSolrのホームページにアクセスしてください。ページの左側で、[クエリ]オプションをクリックします。ここでは、クエリのパラメータのフィールドを確認できます。
レコードの取得
名前の付いたコアに3つのレコードがあると仮定します my_core。選択したコアから特定のレコードを取得するには、特定のドキュメントのフィールドの名前と値のペアを渡す必要があります。たとえば、フィールドの値を含むレコードを取得する場合id、フィールドの名前と値のペアを-として渡す必要があります Id:001 パラメータの値として q クエリを実行します。
同様に、*:*を値としてパラメーターに渡すことにより、インデックスからすべてのレコードを取得できます。 q、次のスクリーンショットに示すように。
2番目のレコードから取得
パラメータに値として2を渡すことにより、2番目のレコードからレコードを取得できます start、次のスクリーンショットに示すように。
レコード数の制限
に値を指定することにより、レコード数を制限できます。 rowsパラメータ。たとえば、値2をパラメータに渡すことで、クエリ結果のレコードの総数を2に制限できます。rows、次のスクリーンショットに示すように。
応答ライタータイプ
パラメータの提供された値から1つを選択することにより、必要なドキュメントタイプで応答を取得できます。 wt。
上記の例では、 .csv 応答を取得するためのフォーマット。
フィールドのリスト
結果のドキュメントに特定のフィールドを含める場合は、必須フィールドのリストを値としてプロパティにコンマで区切って渡す必要があります。 fl。
次の例では、フィールドを取得しようとしています- id, phone, そして first_name。
Apache Solrのファセットとは、検索結果をさまざまなカテゴリに分類することです。この章では、ApacheSolrで使用できるファセットのタイプについて説明します。
Query faceting −指定されたクエリにも一致する現在の検索結果内のドキュメントの数を返します。
Date faceting −特定の日付範囲内にあるドキュメントの数を返します。
ファセットコマンドは通常のSolrクエリ要求に追加され、ファセットカウントは同じクエリ応答で返されます。
ファセットクエリの例
フィールドの使用 faceting、すべての用語のカウントを取得することも、特定のフィールドの上位の用語のみを取得することもできます。
例として、次のことを考えてみましょう。 books.csv さまざまな本に関するデータを含むファイル。
id,cat,name,price,inStock,author,series_t,sequence_i,genre_s
0553573403,book,A Game of Thrones,5.99,true,George R.R. Martin,"A Song of Ice
and Fire",1,fantasy
0553579908,book,A Clash of Kings,10.99,true,George R.R. Martin,"A Song of Ice
and Fire",2,fantasy
055357342X,book,A Storm of Swords,7.99,true,George R.R. Martin,"A Song of Ice
and Fire",3,fantasy
0553293354,book,Foundation,7.99,true,Isaac Asimov,Foundation Novels,1,scifi
0812521390,book,The Black Company,4.99,false,Glen Cook,The Chronicles of The
Black Company,1,fantasy
0812550706,book,Ender's Game,6.99,true,Orson Scott Card,Ender,1,scifi
0441385532,book,Jhereg,7.95,false,Steven Brust,Vlad Taltos,1,fantasy
0380014300,book,Nine Princes In Amber,6.99,true,Roger Zelazny,the Chronicles of
Amber,1,fantasy
0805080481,book,The Book of Three,5.99,true,Lloyd Alexander,The Chronicles of
Prydain,1,fantasy
080508049X,book,The Black Cauldron,5.99,true,Lloyd Alexander,The Chronicles of
Prydain,2,fantasy
このファイルをApacheSolrに投稿しましょう。 post ツール。
[Hadoop@localhost bin]$ ./post -c Solr_sample sample.csv
上記のコマンドを実行すると、指定されたすべてのドキュメント .csv ファイルはApacheSolrにアップロードされます。
次に、フィールドでファセットクエリを実行しましょう author コレクション/コアに0行あり my_core。
ApacheSolrのWebUIを開き、ページの左側にあるチェックボックスをオンにします facet、次のスクリーンショットに示すように。
チェックボックスをオンにすると、ファセット検索のパラメータを渡すために、さらに3つのテキストフィールドが表示されます。ここで、クエリのパラメータとして、次の値を渡します。
q = *:*, rows = 0, facet.field = author
最後に、をクリックしてクエリを実行します Execute Query ボタン。
実行すると、次のような結果になります。
著者に基づいてインデックス内のドキュメントを分類し、各著者が寄稿した本の数を指定します。
JavaクライアントAPIを使用したファセット
以下は、ApacheSolrインデックスにドキュメントを追加するJavaプログラムです。このコードを名前のファイルに保存しますHitHighlighting.java。
import java.io.IOException;
import java.util.List;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrQuery;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.request.QueryRequest;
import org.apache.Solr.client.Solrj.response.FacetField;
import org.apache.Solr.client.Solrj.response.FacetField.Count;
import org.apache.Solr.client.Solrj.response.QueryResponse;
import org.apache.Solr.common.SolrInputDocument;
public class HitHighlighting {
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();
//String query = request.query;
SolrQuery query = new SolrQuery();
//Setting the query string
query.setQuery("*:*");
//Setting the no.of rows
query.setRows(0);
//Adding the facet field
query.addFacetField("author");
//Creating the query request
QueryRequest qryReq = new QueryRequest(query);
//Creating the query response
QueryResponse resp = qryReq.process(Solr);
//Retrieving the response fields
System.out.println(resp.getFacetFields());
List<FacetField> facetFields = resp.getFacetFields();
for (int i = 0; i > facetFields.size(); i++) {
FacetField facetField = facetFields.get(i);
List<Count> facetInfo = facetField.getValues();
for (FacetField.Count facetInstance : facetInfo) {
System.out.println(facetInstance.getName() + " : " +
facetInstance.getCount() + " [drilldown qry:" +
facetInstance.getAsFilterQuery());
}
System.out.println("Hello");
}
}
}
ターミナルで次のコマンドを実行して、上記のコードをコンパイルします-
[Hadoop@localhost bin]$ javac HitHighlighting
[Hadoop@localhost bin]$ java HitHighlighting
上記のコマンドを実行すると、次の出力が得られます。
[author:[George R.R. Martin (3), Lloyd Alexander (2), Glen Cook (1), Isaac
Asimov (1), Orson Scott Card (1), Roger Zelazny (1), Steven Brust (1)]]