使用 REST API 搜索搜索文档的元数据属性(最后修改)

Search metadata properties (last-modified) of the document using REST API search

我想使用 REST API 搜索来搜索元数据属性 'last-modified'。我有在查询控制台中运行的等效 cts 搜索。

正在运行的 qconsole 中的 CTS 查询-

  cts.search(cts.andQuery([
 cts.propertiesFragmentQuery(
    cts.elementRangeQuery(
        xs.QName('prop:last-modified'),'>',
        "2020-04-07T10:22:55-05:00"))
        ]))

这是我用来执行的 REST API 搜索结构化查询。

http://localhost:xxxx/v1/search?format=json&pageLength=2000&start=1

{
    "search": {
        "ctsquery": {
            "andQuery": {
                "queries": [
                    {
                        "propertiesFragmentQuery": {
                            "elementRangeQuery": {
                                "property": [
                                    "xsQName('prop:last-modified')"
                                ],
                                "operator": ">",
                                "value": [
                                    {
                                        "type": "dateTime",
                                        "val": "2020-04-07T10:22:55-05:00"
                                    }
                                ]
                            }
                        }
                    }
                ]
            }
        }
    }
}

我得到以下信息

错误"statusCode":500, "status": "Internal Server Error", "messageCode": "INTERNAL ERROR", "message": "XDMP-QUERYNODE: cts:query(object-node{\"andQuery\":object-node{\"queries\":array-node{object-node{\"propertiesFragmentQuery\":object-node{...}} }}}) -- 查询元素 object-node{\"elementRangeQuery\":object-node{...}} 包含未知子节点。有关详细信息,请参阅 MarkLogic 服务器错误日志。"

我在查询中遗漏了什么或者是否有任何其他方法可以从 REST API 访问属性?

谢谢。

错误表明 cts.query 的 JSON 序列化无效。

找出正确序列化的一种方法是在 QueryConsole 中工作:

  1. 写一个 cts.search() 即 returns 预期结果为 cts.query()
  2. 将 cts.query() 包裹在 xdmp.toJSON() 中,为 cts.query
  3. 生成序列化对象
  4. 使用序列化对象作为有效载荷中ctsquery键的值

这应该可以解决 XDMP-QUERYNODE 错误。

希望对您有所帮助,