Delete by id

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Delete by id

Dwane Hall
Hey Solr community,

I’m having an issue deleting documents from my Solr index and am seeking some community advice when somebody gets a spare minute. It seems really like a really simple problem …a requirement to delete a document by its id.

Here’s how my documents are mapped in solr

<uniqueKey>DOC_ID</uniqueKey>
<field name="DOC_ID" type="string" indexed="true" stored="true" required="true" multiValued="false" />

My json format to delete the document (all looks correct according to https://lucene.apache.org/solr/guide/7_6/uploading-data-with-index-handlers.html “The JSON update format allows for a simple delete-by-id. The value of a delete can be an array which contains a list of zero or more specific document id’s (not a range) to be deleted. For example, a single document”)

Attempt 1 – “shorthand”
{“delete”:”123!12345”}

Attempt 2 – “longhand”
{“delete”:“DOC_ID”:”123!12345”}
{“delete”:{“DOC_ID”:”123!12345”}}

..the error is the same in all instances “org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: DOC_ID”

Can anyone see any obvious details I’m overlooking?

I’ve tried all the update handlers below (both curl and through admin ui)

/update/
/update/json
/update/json/docs

My environment
Solr cloud 7.6
Single node

As always any advice would be greatly appreciated,

Thanks,

Dwane
Reply | Threaded
Open this post in threaded view
|

Re: Delete by id

Matt Pearce
Hi Dwane,

The error suggests that Solr is trying to add a document, rather than
delete one, and is complaining that the DOC_ID is missing.

I tried each of your examples (without the smart quotes), and they all
worked as expected, both from curl and the admin UI. There's an error in
your longhand example, which should read
{ "delete": { "id": "123!12345" }}
However, even using your example, I didn't get a complaint about the
field being missing.

Using curl, my command was:
curl -XPOST -H 'Content-type: application/json'
http://localhost:8983/solr/testCollection/update -d '{ "delete":
"123!12345" }'

Are you doing anything differently from that?

Thanks,
Matt


On 11/02/2019 23:24, Dwane Hall wrote:

> Hey Solr community,
>
> I’m having an issue deleting documents from my Solr index and am seeking some community advice when somebody gets a spare minute. It seems really like a really simple problem …a requirement to delete a document by its id.
>
> Here’s how my documents are mapped in solr
>
> <uniqueKey>DOC_ID</uniqueKey>
> <field name="DOC_ID" type="string" indexed="true" stored="true" required="true" multiValued="false" />
>
> My json format to delete the document (all looks correct according to https://lucene.apache.org/solr/guide/7_6/uploading-data-with-index-handlers.html “The JSON update format allows for a simple delete-by-id. The value of a delete can be an array which contains a list of zero or more specific document id’s (not a range) to be deleted. For example, a single document”)
>
> Attempt 1 – “shorthand”
> {“delete”:”123!12345”}
>
> Attempt 2 – “longhand”
> {“delete”:“DOC_ID”:”123!12345”}
> {“delete”:{“DOC_ID”:”123!12345”}}
>
> ..the error is the same in all instances “org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: DOC_ID”
>
> Can anyone see any obvious details I’m overlooking?
>
> I’ve tried all the update handlers below (both curl and through admin ui)
>
> /update/
> /update/json
> /update/json/docs
>
> My environment
> Solr cloud 7.6
> Single node
>
> As always any advice would be greatly appreciated,
>
> Thanks,
>
> Dwane
>

--
Matt Pearce
Flax - Open Source Enterprise Search
www.flax.co.uk
Reply | Threaded
Open this post in threaded view
|

Re: Delete by id

Dwane Hall
Thanks Matt,

I was thinking the same regarding Solr thinking it's an update, not a delete. Sorry about the second "longhand" example, yes that was a copy paste issue the format is incorrect I was playing around with a few options with the JSON format.  I'll keep testing the only difference I could see between our examples was you keeping your unique id field called "id" and not a custom value ("DOC_ID" in my instance).  It seems minor but I've run out of any other ideas and am fishing at the moment.

Thanks again,

Dwane


________________________________
From: Matt Pearce <[hidden email]>
Sent: Wednesday, 13 February 2019 10:40 PM
To: [hidden email]
Subject: Re: Delete by id

Hi Dwane,

The error suggests that Solr is trying to add a document, rather than
delete one, and is complaining that the DOC_ID is missing.

I tried each of your examples (without the smart quotes), and they all
worked as expected, both from curl and the admin UI. There's an error in
your longhand example, which should read
{ "delete": { "id": "123!12345" }}
However, even using your example, I didn't get a complaint about the
field being missing.

Using curl, my command was:
curl -XPOST -H 'Content-type: application/json'
http://localhost:8983/solr/testCollection/update -d '{ "delete":
"123!12345" }'

Are you doing anything differently from that?

Thanks,
Matt


On 11/02/2019 23:24, Dwane Hall wrote:

> Hey Solr community,
>
> I’m having an issue deleting documents from my Solr index and am seeking some community advice when somebody gets a spare minute. It seems really like a really simple problem …a requirement to delete a document by its id.
>
> Here’s how my documents are mapped in solr
>
> <uniqueKey>DOC_ID</uniqueKey>
> <field name="DOC_ID" type="string" indexed="true" stored="true" required="true" multiValued="false" />
>
> My json format to delete the document (all looks correct according to https://lucene.apache.org/solr/guide/7_6/uploading-data-with-index-handlers.html “The JSON update format allows for a simple delete-by-id. The value of a delete can be an array which contains a list of zero or more specific document id’s (not a range) to be deleted. For example, a single document”)
>
> Attempt 1 – “shorthand”
> {“delete”:”123!12345”}
>
> Attempt 2 – “longhand”
> {“delete”:“DOC_ID”:”123!12345”}
> {“delete”:{“DOC_ID”:”123!12345”}}
>
> ..the error is the same in all instances “org.apache.solr.common.SolrException: Document is missing mandatory uniqueKey field: DOC_ID”
>
> Can anyone see any obvious details I’m overlooking?
>
> I’ve tried all the update handlers below (both curl and through admin ui)
>
> /update/
> /update/json
> /update/json/docs
>
> My environment
> Solr cloud 7.6
> Single node
>
> As always any advice would be greatly appreciated,
>
> Thanks,
>
> Dwane
>

--
Matt Pearce
Flax - Open Source Enterprise Search
www.flax.co.uk<http://www.flax.co.uk>