Reputation: 1574
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!
Upvotes: 9
Views: 11841
Reputation: 5257
Use the method deleteByQuery() to delete the documents matching the query:
server.deleteByQuery("id:20");
server.commit();
Upvotes: 0
Reputation: 524
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'
Upvotes: -1
Reputation: 11
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 );
Upvotes: 1
Reputation: 29332
When you call deleteById, just use the id, without query syntax:
server.deleteById("20");
server.commit();
Upvotes: 17