获取 com.marklogic.client.FailedRequestException 无效参数:无效查询结构(检查命名空间)
Getting com.marklogic.client.FailedRequestException Invalid parameter: Invalid query structure (check namespace)
我是 Marklogic 的新手,可能遗漏了一些东西。我正在使用 MarkLogic 7.0,java-client-api 2.0.5。创建了一个新的 REST 实例后,我正在尝试 运行 Marklogic 提供的示例代码:
DatabaseClient client =
DatabaseClientFactory.newClient("some.host.com", 8006, "user", "****",
DatabaseClientFactory.Authentication.DIGEST);
JSONDocumentManager doc = client.newJSONDocumentManager();
doc.write(
"hello.json",
new StringHandle("{\"recipient\": \"world\", \"message\": \"Hello, world!\"}"));
QueryManager query = client.newQueryManager();
StructuredQueryBuilder b = query.newStructuredQueryBuilder();
SearchHandle results =
query.search(
b.and(b.term("hello"), b.value(b.jsonKey("recipient"), "world")),
new SearchHandle());
for (MatchDocumentSummary summary : results.getMatchResults()) {
System.out.println(doc.read(summary.getUri(), new StringHandle()).toString());
}
但是我收到以下错误
com.marklogic.client.FailedRequestException: Local message: search failed: Bad Request. Server Message: REST-INVALIDPARAM: (err:FOER0000) Invalid parameter: Invalid query structure (check namespace): <query xmlns:search="http://marklogic.com/appservices/search" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><and-query><term-query><text>hello</text></term-query><value-query><json-key>recipient</json-key><text>world</text></value-query></and-query></query>
at com.marklogic.client.impl.JerseyServices.search(JerseyServices.java:1893)
at com.marklogic.client.impl.JerseyServices.search(JerseyServices.java:1703)
at com.marklogic.client.impl.QueryManagerImpl.search(QueryManagerImpl.java:199)
at com.marklogic.client.impl.QueryManagerImpl.search(QueryManagerImpl.java:162)
这是什么原因?是因为某些服务器配置,我需要以某种方式调整代码吗?(我没有管理员权限并且已经配置了 MarkLogic 服务器)
P.S。在我在另一台机器上安装 MarkLogic 并在那里 运行 相同的代码后,它工作正常。
谢谢,
Hlib
更新:
- 服务器日志未提供任何附加信息
- 如果我在每个标签中放置 "search" 命名空间,一切正常。
我从类路径中删除了 woodstox 库。正如@SamMefford 所提到的,它导致 XMLStreamWriter 行为异常。之后一切正常。
我是 Marklogic 的新手,可能遗漏了一些东西。我正在使用 MarkLogic 7.0,java-client-api 2.0.5。创建了一个新的 REST 实例后,我正在尝试 运行 Marklogic 提供的示例代码:
DatabaseClient client =
DatabaseClientFactory.newClient("some.host.com", 8006, "user", "****",
DatabaseClientFactory.Authentication.DIGEST);
JSONDocumentManager doc = client.newJSONDocumentManager();
doc.write(
"hello.json",
new StringHandle("{\"recipient\": \"world\", \"message\": \"Hello, world!\"}"));
QueryManager query = client.newQueryManager();
StructuredQueryBuilder b = query.newStructuredQueryBuilder();
SearchHandle results =
query.search(
b.and(b.term("hello"), b.value(b.jsonKey("recipient"), "world")),
new SearchHandle());
for (MatchDocumentSummary summary : results.getMatchResults()) {
System.out.println(doc.read(summary.getUri(), new StringHandle()).toString());
}
但是我收到以下错误
com.marklogic.client.FailedRequestException: Local message: search failed: Bad Request. Server Message: REST-INVALIDPARAM: (err:FOER0000) Invalid parameter: Invalid query structure (check namespace): <query xmlns:search="http://marklogic.com/appservices/search" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><and-query><term-query><text>hello</text></term-query><value-query><json-key>recipient</json-key><text>world</text></value-query></and-query></query>
at com.marklogic.client.impl.JerseyServices.search(JerseyServices.java:1893)
at com.marklogic.client.impl.JerseyServices.search(JerseyServices.java:1703)
at com.marklogic.client.impl.QueryManagerImpl.search(QueryManagerImpl.java:199)
at com.marklogic.client.impl.QueryManagerImpl.search(QueryManagerImpl.java:162)
这是什么原因?是因为某些服务器配置,我需要以某种方式调整代码吗?(我没有管理员权限并且已经配置了 MarkLogic 服务器)
P.S。在我在另一台机器上安装 MarkLogic 并在那里 运行 相同的代码后,它工作正常。
谢谢, Hlib
更新:
- 服务器日志未提供任何附加信息
- 如果我在每个标签中放置 "search" 命名空间,一切正常。
我从类路径中删除了 woodstox 库。正如@SamMefford 所提到的,它导致 XMLStreamWriter 行为异常。之后一切正常。