Apache-solr-deleting-documents

提供:Dev Guides
移動先:案内検索

Apache Solr-ドキュメントの削除

ドキュメントを削除する

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* という名前のコアに属するインデックスからドキュメントを削除する場合、以下に示すように、 *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インターフェースのホームページにアクセスし、コアを my_core として選択します。 テキスト領域 q にクエリ「:」を渡してすべてのドキュメントを取得し、クエリを実行してください。 実行すると、指定されたドキュメントが削除されたことを確認できます。

ドキュメントの削除

フィールドを削除する

ID以外のフィールドに基づいてドキュメントを削除する必要がある場合があります。 たとえば、都市がチェンナイであるドキュメントを削除する必要がある場合があります。

このような場合、<query> </query>タグペア内のフィールドの名前と値を指定する必要があります。

<delete>
   <query>city:Chennai</query>
</delete>
*delete_field.xml* として保存し、Solrの *post* ツールを使用して、 *my_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インターフェースのホームページにアクセスし、コアを my_core として選択します。 テキスト領域 q にクエリ「:」を渡してすべてのドキュメントを取得し、クエリを実行してください。 実行時に、指定されたフィールド値のペアを含むドキュメントが削除されることを確認できます。

値ペア

すべての文書を削除する

特定のフィールドを削除するのと同じように、インデックスからすべてのドキュメントを削除する場合は、下に示すように、タグ<query> </query>の間に記号「:」を渡すだけです。

<delete>
   <query>*:*</query>
</delete>
*delete_all.xml* として保存し、Solrの *post* ツールを使用して、 *my_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インターフェースのホームページにアクセスし、コアを 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");
   }
}

端末で次のコマンドを実行して、上記のコードをコンパイルします-

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

上記のコマンドを実行すると、次の出力が得られます。

Documents deleted