[ 
https://issues.apache.org/jira/browse/SOLR-16395?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17623250#comment-17623250
 ] 

Jason Gerlowski edited comment on SOLR-16395 at 10/24/22 3:35 PM:
------------------------------------------------------------------

To be a little more explicit about the APIs we want this ticket to cover, I 
found 9 APIs that need work related to schema modification: 

* Create/Update field
** Current Form: POST /api/collections/collName/schema \{"add-field": \{...\}\}
** Desired Form: PUT /api/collections/collName/schema/fields/fieldName \{...\}
** Spreadsheet Ref: Tab 2, Line 27
* Delete field
** Current Form: POST /api/collections/collName/schema \{"delete-field": 
\{...\}\}
** Desired Form: DELETE /api/collections/collName/schema/fields/fieldName
** Spreadsheet Ref: Tab 2, Line 28
* Create/Update Dynamic Field
** Current Form: POST /api/collections/collName/schema \{"add-dynamic-field": 
\{...\}\}
** Desired Form: PUT /api/collections/collName/schema/dynamicfields/fieldName
** Spreadsheet Ref: Tab 2, Line 30
* Delete dynamic field
** Current Form: POST /api/collections/collName/schema 
\{"delete-dynamic-field": \{...\}\}
** Desired Form: DELETE /api/collections/collName/schema/dynamicfields/fieldName
** Spreadsheet Ref: Tab2, 31
* Create/Update Field Type
** Current Form: POST /api/collections/collName/schema \{"add-field-type": 
\{...\}\}
** Desired Form: PUT /api/collections/collName/schema/fieldtypes/fieldTypeName
** Spreadsheet Ref: Tab 2, Line 33
* Delete Field Type
** Current Form: POST /api/collections/collName/schema \{"delete-field-type": 
\{...\}\}
** Desired Form: DELETE 
/api/collections/collName/schema/fieldTypes/fieldTypeName
** Spreadsheet Ref: Tab 2, Line 34
* Add Copy Field
** Current Form: POST /api/collections/collName/schema \{"add-copy-field": 
\{...\}\}
** Desired Form: PUT /api/collections/collName/schema/copyfields/copyFieldName
** Spreadsheet Ref: Tab 2, Line 36
* Delete Copy Field
** Current Form: POST /api/collections/collName/schema \{"delete-copy-field": 
\{...\}\}
** Desired Form: DELETE 
/api/collections/collName/schema/copyfields/copyFieldName
** Spreadsheet Ref: Tab 2, Line 37
* Bulk Schema Operations
** Current Form: POST /api/collections/collName/schema \{"add-field": \{...\}, 
"add-field": \{...\}\} (notice the duplicate keys)
** Desired Form: POST /api/collections/collName/schema/bulk [\{...\}, \{...\}]
** Spreadsheet Ref: Tab 2, Line 38


Obviously this is a big list.  IMO it makes sense to split these up across 
different PRs, doing some small number (i.e. 1 or 2) of APIs per-PR.  If anyone 
wants to help chip away at this, just call out which APIs from this list you 
intend to work on and we can parallelize them.

In terms of the steps required, the JIRA comments 
[here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17617806&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17617806]
 and 
[here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17617923&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17617923]
 give some good background and step-by-step instructions for switching APIs 
over to the new JAX-RS framework, which is usually helpful or even required as 
the traditional v2 framework doesn't lend itself very readily to RESTful APIs.  
(Those comments describe creating a new API "from scratch", but the steps are 
still applicable to modifying an existing API.)  The PR 
[here|https://github.com/apache/solr/pull/1053] also serves as a helpful 
example to work from.

Not all API modifications require the new JAX-RS framework, though it is 
preferred going forward.  Instructions for updating APIs using the older, 
traditional v2 framework can be found 
[here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17565076&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17565076],
 and an example PR can be found [here|https://github.com/apache/solr/pull/1061].


was (Author: gerlowskija):
To be a little more explicit about the APIs we want this ticket to cover, I 
found 9 APIs that need work related to schema modification: 

* Create/Update field
** Current Form: POST /api/collections/collName/schema \{"add-field": \{...\}\}
** Desired Form: PUT /api/collections/collName/schema/fields/fieldName \{...\}
** Spreadsheet Ref: Tab 2, Line 27
* Delete field
** Current Form: POST /api/collections/collName/schema \{"delete-field": 
\{...\}\}
** Desired Form: DELETE /api/collections/collName/schema/fields/fieldName
** Spreadsheet Ref: Tab 2, Line 28
* Create/Update Dynamic Field
** Current Form: POST /api/collections/collName/schema \{"add-dynamic-field": 
\{...\}\}
** Desired Form: PUT /api/collections/collName/schema/dynamicfields/fieldName
** Spreadsheet Ref: Tab 2, Line 30
* Delete dynamic field
** Current Form: POST /api/collections/collName/schema 
\{"delete-dynamic-field": \{...\}\}
** Desired Form: DELETE /api/collections/collName/schema/dynamicfields/fieldName
** Spreadsheet Ref: Tab2, 31
* Create/Update Field Type
** Current Form: POST /api/collections/collName/schema \{"add-field-type": 
\{...\}\}
** Desired Form: PUT /api/collections/collName/schema/fieldtypes/fieldTypeName
** Spreadsheet Ref: Tab 2, Line 33
* Delete Field Type
** Current Form: POST /api/collections/collName/schema \{"delete-field-type": 
\{...\}\}
** Desired Form: DELETE 
/api/collections/collName/schema/fieldTypes/fieldTypeName
** Spreadsheet Ref: Tab 2, Line 34
* Add Copy Field
** Current Form: POST /api/collections/collName/schema \{"add-copy-field": 
\{...\}\}
** Desired Form: PUT /api/collections/collName/schema/copyfields/copyFieldName
** Spreadsheet Ref: Tab 2, Line 36
* Delete Copy Field
** Current Form: POST /api/collections/collName/schema \{"delete-copy-field": 
\{...\}\}
** Desired Form: DELETE 
/api/collections/collName/schema/copyfields/copyFieldName
** Spreadsheet Ref: Tab 2, Line 37
* Bulk Schema Operations
** Current Form: POST /api/collections/collName/schema \{"add-field": \{...\}, 
"add-field": \{...\}\} (notice the duplicate keys)
** Desired Form: POST /api/collections/collName/schema/bulk [\{...\}, \{...\}]
** Spreadsheet Ref: Tab 2, Line 38



* API Name
** Current Form:
** Desired Form:
** Spreadsheet Ref:

Obviously this is a big list.  IMO it makes sense to split these up across 
different PRs, doing some small number (i.e. 1 or 2) of APIs per-PR.  If anyone 
wants to help chip away at this, just call out which APIs from this list you 
intend to work on and we can parallelize them.

In terms of the steps required, the JIRA comments 
[here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17617806&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17617806]
 and 
[here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17617923&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17617923]
 give some good background and step-by-step instructions for switching APIs 
over to the new JAX-RS framework, which is usually helpful or even required as 
the traditional v2 framework doesn't lend itself very readily to RESTful APIs.  
(Those comments describe creating a new API "from scratch", but the steps are 
still applicable to modifying an existing API.)  The PR 
[here|https://github.com/apache/solr/pull/1053] also serves as a helpful 
example to work from.

Not all API modifications require the new JAX-RS framework, though it is 
preferred going forward.  Instructions for updating APIs using the older, 
traditional v2 framework can be found 
[here|https://issues.apache.org/jira/browse/SOLR-15737?focusedCommentId=17565076&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17565076],
 and an example PR can be found [here|https://github.com/apache/solr/pull/1061].

> Cosmetic, REST-fulness improvements to v2 schema APIs
> -----------------------------------------------------
>
>                 Key: SOLR-16395
>                 URL: https://issues.apache.org/jira/browse/SOLR-16395
>             Project: Solr
>          Issue Type: Sub-task
>          Components: v2 API
>    Affects Versions: main (10.0)
>            Reporter: Jason Gerlowski
>            Priority: Major
>
> As mentioned on SOLR-15781, the v2 API currently has an experimental 
> designation, and the community has expressed an interest in using this period 
> to update our v2 endpoints to be more REST-ful and consistent.  The current 
> plan is to follow the
> specific changes laid out in [this 
> spreadsheet|https://docs.google.com/spreadsheets/d/1HAoBBFPpSiT8mJmgNZKkZAPwfCfPvlc08m5jz3fQBpA/edit?usp=sharing],
>  though of course nothing there is set in stone and there are still warts to 
> be worked out.
> This ticket plans to tackle making the changes required for Solr's schema 
> read and collection-overlay APIs, as described in the spreadsheet above.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to