4zh4r_s4l4ti
4zh4r_s4l4ti

Reputation: 1574

Deleting index from Solr using solrj as a client

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

Answers (4)

Andrei Krasutski
Andrei Krasutski

Reputation: 5257

Use the method deleteByQuery() to delete the documents matching the query:

server.deleteByQuery("id:20");
server.commit();

Upvotes: 0

Akshay
Akshay

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

joshwa
joshwa

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

itsadok
itsadok

Reputation: 29332

When you call deleteById, just use the id, without query syntax:

server.deleteById("20");
server.commit();

Upvotes: 17

Related Questions