在请求中使用cursorMark将json请求发送给Solr

grg*_*grg 5 lucene solr

是否可以cursorMark在POST请求的正文中包含值,而不是将其作为查询字符串参数发送?

以下查询:

{"query":"val:abc","limit":10,"cursorMark":"*","sort":"id asc"}
Run Code Online (Sandbox Code Playgroud)

返回错误消息:"JSON请求中的未知顶级键:cursorMark"

grg*_*grg 5

根据Solr Json Request API文档,每个查询字符串参数在JSON API中都有一个对应的POST请求参数,例如q -> querystart -> offset等。

但是, cursorMark查询字符串参数没有等效参数。

我知道的最佳解决方案是将请求类型从application/json更改为application/x-www-form-urlencoded,这允许在 POST 请求正文中使用查询字符串参数。我使用application/json的原因是为了获取 json 响应,但事实证明它是由wt=json参数控制的。

  1. 将查询 uri 更改为:http://localhost:8983/solr/myCore/select?wt=json
  2. 将 POST 请求参数更改回查询字符串对应项,即 q、start、rows 等。
  3. UrlEncode 查询字符串。
  4. 将编码后的查询字符串放入 POST 正文中。
  5. 将请求内容类型更改为application/x-www-form-urlencoded