Apache Solr-문서 삭제
문서 삭제
Apache Solr 색인에서 문서를 삭제하려면 <delete> </ delete> 태그 사이에 삭제할 문서의 ID를 지정해야합니다.
<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 웹 인터페이스의 홈페이지를 방문하여 코어를 다음과 같이 선택하십시오. 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