You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "James Ashbourne (Jira)" <ji...@apache.org> on 2021/03/04 14:11:00 UTC
[jira] [Created] (SOLR-15213) Add support for "merge" atomic update
operation for child documents
James Ashbourne created SOLR-15213:
--------------------------------------
Summary: 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
Security Level: Public (Default Security Level. Issues are Public)
Reporter: James Ashbourne
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 with merging if it is present.
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.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org