首页 > 解决方案 > AEM Query-builder 批量查询

问题描述

我有以下工作查询

path=/content/dam
type=sling:OrderedFolder
nodename=[0-9][0-9][0-9][0-9]-([0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9])
property=jcr:content/metadataprofile
property.operation=exists
property.value=false
p.limit=-1

它在整个Path=/content/dam上运行,因此它遍历所有节点大约 20 分钟并给出结果。

当以编程方式使用查询构建器 api 时,如何分批实现它,例如 - 遍历 1000 个节点并以代码方式执行某些操作,然后继续查询并遍历下一个 1000 个节点等等?可能吗 ?
提前致谢。

标签: aemquery-builder

解决方案


您可以从这里使用分页方法:https ://helpx.adobe.com/experience-manager/6-3/sites/developing/using/querybuilder-api.html#ExampleQueryBuilderAPIUsage

分页配置如下:

// can be done in map or with Query methods
map.put("p.offset", "0"); // same as query.setStart(0) below
map.put("p.limit", "20"); // same as query.setHitsPerPage(20) below

或者

query.setStart(0);
query.setHitsPerPage(20);

并在一个循环中遍历结果:

// iterating over the results
for (Hit hit : result.getHits()) {
    String path = hit.getPath();
    ......
}

有关更多详细信息,请查看Implementing pagination上面提供的页面。


推荐阅读