Hi,

At least, it is better to enclose your json body with '[ ]', I think.

Following is the result I tried using curl.

$ curl -XPOST "localhost:8983/solr/test_core/update/json?commit=true"
--data-binary '{"id":"test1","title":{"set":"Solr Rocks"}}'
{
  "responseHeader":{
    "status":400,
    "QTime":18},
  "error":{
    "metadata":[
      "error-class","org.apache.solr.common.SolrException",
      "root-error-class","org.apache.solr.common.SolrException"],
    "msg":"Unknown command 'id' at [5]",
    "code":400}}
$ curl -XPOST "localhost:8983/solr/test_core/update/json?commit=true"
--data-binary '[{"id":"test1","title":{"set":"Solr Rocks"}}]'
{
  "responseHeader":{
    "status":0,
    "QTime":250}}

Thanks,
Yasufumi


2018年5月22日(火) 1:26 Nándor Mátravölgyi <nandor.ma...@gmail.com>:

> Hi,
>
> I'm trying to build a simple document search core with SolrCloud. I've run
> into an issue when trying to partially update doucments. (aka atomic
> updates) It appears to be a bug, because the semantically same request
> succeeds in XML format, while it fails as JSON.
>
> The body of the XML request:
> <add><doc><field name="id">test1</field><field name="title"
> update="set">Solr Rocks</field></doc></add>
>
> The body of the JSON request:
> {"id":"test1","title":{"set":"Solr Rocks"}}
>
> I'm using the requests library in Python3 to send the update request.
> Sending the XML request with the following code works as expected:
> r = requests.post('
> http://localhost:8983/v2/c/testnode/update/xml?commit=true',
> headers={'Content-type': 'application/xml'}, data=xml)
>
> Sending the JSON request with the following codes return with a
> SolrException:
> r = requests.post('
> http://localhost:8983/v2/c/testnode/update/json?commit=true',
> headers={'Content-type': 'application/json'}, data=json)
> r = requests.post('
> http://localhost:8983/solr/testnode/update/json/docs?commit=true',
> headers={'Content-type': 'application/json'}, data=json)
>
> Using the same lines of code to send a JSON request that is not an atomic
> update works as expected. Such JSON request body is like:
> {"id":"test1","title":"Solr Rocks"}
>
> The error message in the response is: ERROR: [doc=test1] unknown field
> 'title.set'
> Here is the log of the exception: https://pastebin.com/raw/VJe5hR25
>
> Depending on which API I send the request to, the logs are identical except
> on line 27 and 28:
> This is with v2:
>   at
>
> org.apache.solr.handler.UpdateRequestHandlerApi$1.call(UpdateRequestHandlerApi.java:48)
>   at org.apache.solr.api.V2HttpCall.execute(V2HttpCall.java:325)
> and this is with the other:
>   at org.apache.solr.core.SolrCore.execute(SolrCore.java:2503)
>   at org.apache.solr.servlet.HttpSolrCall.execute(HttpSolrCall.java:711)
>
> I'm using Solr 7.3.1 and I believe I do everything according to the
> documentation. (
>
> https://lucene.apache.org/solr/guide/7_3/updating-parts-of-documents.html#atomic-updates
> )
> The solrconfig.xml and managed-schema files are fairly simple, they have
> code snippets from the examples mostly: https://pastebin.com/199JJkp0
> https://pastebin.com/Dp1YK46k
>
> This could be a bug, or I can't fathom what I'm missing. Can anyone help me
> out?
> Thanks,
> Nandor
>

Reply via email to