问题
I am using solrj as client for indexing documents on the solr server.
I am having problem while deleting the indexes by 'id' from the solr server. I am using following code to delete the indexes:
server.deleteById("id:20");
server.commit(true,true);
After this when i again search for the documents, the search result contains the above document also. Dont know what is going wrong with this code. Please help me out with issue.
Thanks!
回答1:
When you call deleteById, just use the id, without query syntax:
server.deleteById("20");
server.commit();
回答2:
After you delete the document, commit the server and add the following lines. After the server commit line.
UpdateRequest req = new UpdateRequest();
req.setAction( UpdateRequest.ACTION.COMMIT, false, false );
req.add( docs );
UpdateResponse rsp = req.process( server );
回答3:
Use the method deleteByQuery() to delete the documents matching the query:
server.deleteByQuery("id:20");
server.commit();
回答4:
So the deleteById will work only if you are forming your key using only one attribute. So, I had case where the id was a combination of multiple attributes like employeeId+deptId. But, my table had employeeId & deptId as separate columns as well with indexes created on it. So when I wanted to delete a record I had only the employeeId and not deptId. I used the curl command to delete where you can specify the column and its value and it will delete the entire record.
E.g. curl http://localhost:8983/solr/update --data ':' -H 'Content-type:text/xml; charset=utf-8'
来源:https://stackoverflow.com/questions/2657409/deleting-index-from-solr-using-solrj-as-a-client