[
https://issues.apache.org/jira/browse/SOLR-15213?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17453184#comment-17453184
]
David Smiley commented on SOLR-15213:
-------------------------------------
Thanks.
* You used ErrorCode.INVALID_STATE & FORBIDDEN but I think in both cases,
BAD_REQUEST is appropriate.
* when you collected by ID, the ID might not be of type String to use Object.
* I noticed changes to testBlockAtomicInplaceUpdates in the assertions.
Apparently you just added some brackets to thus assert that in many cases, the
child docs should be as an array and not stand-alone. I suppose this is
acceptable because "add" implies a list? I'm just trying to verify &
rationalize the change with you.
> Add support for "merge" atomic update operation for child documents
> -------------------------------------------------------------------
>
> Key: SOLR-15213
> URL: https://issues.apache.org/jira/browse/SOLR-15213
> Project: Solr
> Issue Type: New Feature
> Reporter: James Ashbourne
> Priority: Major
> Attachments: SOLR-15213-1.patch, SOLR-15213.patch
>
>
> Solr has "add", "set", "add-distinct" which work but all have their
> limitations. Namely, there's currently no way to atomically update a document
> where that document may or may not be present already by merging if it is
> present and inserting if it isn't.
> i.e. in the scenario where we have a document with two nested children:
>
> {noformat}
> {"id": "ocean1",
> "_isParent":"true",
> "fish": [
> {
> "id": "fish1",
> "type_s": "fish",
> "name_s": "Doe",
> "_isParent":"false"},
> {
> "id": "fish2",
> "type_s": "fish",
> "name_s": "Hans",
> "_isParent":"false"}]
> }{noformat}
>
> If we later want to update that child doc e.g.:
> {noformat}
> {"id": "ocean1",
> "_isParent":"true",
> "fish": [
> {
> "id": "fish1",
> "type_s": "fish",
> "name_s": "James", // new name
> "_isParent":"false"},
> ]
> }{noformat}
>
> Existing operations:
> - "add" - will add another nested doc with the same id leaving us with two
> children with the same id.
> - "set" - replaces the whole list of child docs with the single doc, we
> could use this but would first have to fetch all the existing children.
> - "add-distinct" - will reject the update based on the doc already being
> present.
> I've got some changes (see patch) that a new option "merge" which checks
> based on the id and merges the new document with the old with a fall back to
> add if there is no id match.
>
>
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]