You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何打印Java代码调用MarkLogic时实际发送的搜索查询语句?

查看MarkLogic接收的实际搜索查询语句

没问题,你的需求完全合理——想要确认Java代码发送给MarkLogic的实际查询内容,有几个简单实用的方法:

方法1:直接在代码中打印查询XML

MarkLogic的StructuredQueryDefinition自带了toXML()方法,能直接把构建好的查询转换成MarkLogic接收的XML格式,这就是实际发送的查询语句。你只需要在代码中添加一行打印逻辑即可:

QueryManager queryManager = client.newQueryManager();
StructuredQueryBuilder builder = queryManager.newStructuredQueryBuilder();

StructuredQueryDefinition definition = builder.and(
    builder.value(builder.element("filterField"), "abc"),
    builder.range(builder.element("filterName"), "xs:string", Operator.EQ, "newfilter")
);
definition.setCollections(BaseDataConstants.FILTER_COLLECTIONS);

// 打印实际发送给MarkLogic的查询XML
System.out.println(definition.toXML());

SearchHandle searchHandle = new SearchHandle();
queryManager.search(definition, searchHandle);

运行这段代码后,控制台会输出类似这样的XML(这就是ML收到的查询):

<search:query xmlns:search="http://marklogic.com/appservices/search">
  <search:and-query>
    <search:value-query>
      <search:element name="filterField"/>
      <search:text>abc</search:text>
    </search:value-query>
    <search:range-query type="xs:string">
      <search:element name="filterName"/>
      <search:value operator="eq">newfilter</search:value>
    </search:range-query>
  </search:and-query>
  <search:collection>your-collection-name</search:collection>
</search:query>

方法2:启用MarkLogic服务器端查询日志

如果想从服务器端验证收到的查询,可以开启MarkLogic的查询日志:

  • 登录MarkLogic管理控制台(Admin UI)
  • 定位到你使用的数据库,切换到「Logs」标签页
  • 找到「Query Logging」选项,设置日志级别为debug或更详细的级别
  • 保存设置后,MarkLogic会把接收到的所有查询记录到日志文件中(默认路径是MarkLogic/Logs/QueryLog.txt)

方法3:抓包查看完整HTTP请求(可选)

如果需要查看包含HTTP头在内的完整请求内容,可以用WireShark这类抓包工具捕获客户端与MarkLogic服务器之间的通信。不过这个方法相对繁琐,一般前两种方法就足够满足需求了。

内容的提问来源于stack exchange,提问作者marklogic_coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:12:32