Expand my Community achievements bar.

SOLVED

java.lang.UnsupportedOperationException: The query read or traversed more than 100000 nodes.

Avatar

Level 2

Hi ,

I am facing an issue in running the query through my deployed code in AEM.

The map is created as below:

Map<String, String> map = new HashMap<>();

map.put('path', 'path-here');

map.put('type','oak:Unstructured');

map.put("1_property", 'content-type');

map.put("1_property.value", 'value');

map.put("2_property", 'second-property');

map.put("2_property.value", 'true');

map.put("property.and", true);

map.put("orderby",'property to be ordered by');

map.put("p.limit", "-1");

The query.getResult() returns UnsupportedOperationException

When I run the same query in CRX/DE with SQL format I do not face this kind of exception.

select * from oak:Unstructured where jcr:path like 'path-here%'

and contains([content-type], 'value')

and [second-property]='true'

I noticed one thing: If I execute the above SQL query in CRX/DE lite with just changing "contains" to "=" sign as below, I get the below error in CRX/DE lite as well.

"The query read or traversed more than 10000 nodes. To avoid affecting other tasks, processing was stopped."

select * from oak:Unstructured where jcr:path like 'path-here%'

and [content-type]= 'value'

and [second-property]='true'

Can somebody help me?

Thanks,

Nikhil

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Use AEM Plugin to find the query that gets triggered and use the oakutils tool to create an index.

The 100000 limit is set at [3] from the JMX console to prevent the AEM instance running out of memory when a traversal query is triggered.

[1] https://chrome.google.com/webstore/detail/aem-chrome-plug-in/ejdcnikffjleeffpigekhccpepplaode

[2] Oak Utilities : Index Definition Generator

[3] <host>:<port>/system/console/jmx/org.apache.jackrabbit.oak%3Aname%3Dsettings%2Ctype%3DQueryEngineSettings

View solution in original post

6 Replies

Avatar

Community Advisor

You need create custom index so that it doesnt search over entire repository.

Refer below-

http://www.aemcq5tutorials.com/tutorials/aem-oak-indexing-comprehensive-guide/

Avatar

Correct answer by
Employee Advisor

Use AEM Plugin to find the query that gets triggered and use the oakutils tool to create an index.

The 100000 limit is set at [3] from the JMX console to prevent the AEM instance running out of memory when a traversal query is triggered.

[1] https://chrome.google.com/webstore/detail/aem-chrome-plug-in/ejdcnikffjleeffpigekhccpepplaode

[2] Oak Utilities : Index Definition Generator

[3] <host>:<port>/system/console/jmx/org.apache.jackrabbit.oak%3Aname%3Dsettings%2Ctype%3DQueryEngineSettings

Avatar

Level 2

Where to put the generated oakIndex from [2]?

Avatar

Employee Advisor

- Go to <host>:<port>/crx/de

- Create the index under "oak:index" directory

- Use any OOTB indexes for reference.

Avatar

Employee

Try generating an index on the query using the following tool:

Oak Utilities : Index Definition Generator

and then create indexes as per the following docs:

Oak Queries and Indexing

Oak Queries and Indexing

Avatar

Community Advisor

Hi,

You can check below link which has details for the same issue

Having problem with Query builder when we have more records