Solr:更新时 url 字段出错

Solr: getting error on url field while updating

我正在尝试更新我的 Solr 文档的 url 字段,但出现以下错误

HTTP Error 400: Bad Request

我认为这是因为 url 字段

image_new_path = https://aaa.com/bbb/posts/post_fta6cueqq1497926075564.jpeg
req = urllib2.Request(url=solrPath + '/update/json?commit=true', data='[{"id":"' + docs['id'] + '","image":{"set":'+image_new_path+'}}]')

是否有一些我必须更改的特殊字符?如果是,是哪一个?如何?

Solr 错误:

RequestHandlerBase

org.apache.solr.common.SolrException: Cannot parse provided JSON: Expected ',​' or '}': char=:,​position=41 BEFORE='[{"id":"189",​"image":{"set":https:' AFTER='//aaa.com/bbb/user'

您的 image_new_path 值周围缺少 "",您可以通过在其周围添加 "" 来解决此问题:

.. {"set":"'+image_new_path+'"}}

.. 但是你不应该通过自己连接值来手动编写 JSON,因为在转义等方面你必须注意遵循所有 JSON 的规则。

使用 python 中对 json 模块中的 json 的内置支持:

import json

..

.. data=json.dumps([{'id': docs['id'], 'image': {'set': image_new_path}}])

或者甚至更好,使用 Solr 库,例如 pysolr or mysolr

问题是“:”,我必须在“:”之前添加“\”才能使其正常工作。所以现在图像路径变成

https\://aaa/bbb