Apache Solr-문서 삭제

문서 삭제

Apache Solr 색인에서 문서를 삭제하려면 <delete> </ delete> 태그 사이에 삭제할 문서의 ID를 지정해야합니다.

<delete>   
   <id>003</id>   
   <id>005</id> 
   <id>004</id> 
   <id>002</id> 
</delete>

여기에서이 XML 코드는 ID가있는 문서를 삭제하는 데 사용됩니다. 003005. 이 코드를 이름으로 파일에 저장하십시오.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 웹 인터페이스의 홈페이지를 방문하여 코어를 다음과 같이 선택하십시오. 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 웹 인터페이스의 홈페이지를 방문하여 코어를 다음과 같이 선택하십시오. 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 웹 인터페이스의 홈페이지를 방문하여 코어를 다음과 같이 선택하십시오. my_core. 텍스트 영역에 ":"쿼리를 전달하여 모든 문서를 검색합니다.q쿼리를 실행하십시오. 실행시 지정된 필드 값 쌍을 포함하는 문서가 삭제되는 것을 관찰 할 수 있습니다.

Java (Client 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