Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Using querybuilder to retrieve all assets with particular property

Avatar

Level 1

Hi everyone,

I have a requirement where I need to search for all the assets with a particular property. I am trying to use Query Builder API for it. My assets are under multiple different folders under /content/dam. They can be in /content/dam/abc or /content/dam/abc/def or even /content/dam/ghi. There can be multiple child folders or parallel folders where my assets are present. How do I search for all assets which have one property in common in all these different paths? If I use path=/content/dam in my query, it doesn't give any result as all my assets are in one or the other folder but since there are multiple folders I cannot give one definite path. I am using AEM 6.4.2

Topics

Topics help categorize Community content and increase your ability to discover relevant content.

1 Accepted Solution

Avatar

Correct answer by
Community Advisor

@AnshuSingh2701,

Where you are querying, /content/dam, will show you 0 results, it maybe because your AEM platform has reached the maximum node traversal, LimitReads of 10,000. You will need to change the limit from your environment's system/console, but please be warned as when you increase this number, it may affect the overall performance.

http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aname%3Dsettings%2Ctype%3DQueryE...

Screenshot 2020-07-24 at 18.11.47.png

Give this a try.

 

View solution in original post

9 Replies

Avatar

Community Advisor

Hi @AnshuSingh2701 

 

In order to find for all assets with particular property, you can use

path=/content/dam
type=dam:Asset
property=jcr:content/metadata/dc:format
property.value=image/png
p.limit=-1

 

The above query should search in depth to get all assets.

 

If you are looking for defining multiple paths in query, you can use something like that:

 

group.p.or=true
group.1_path=/content/dam/we-retail-screens
group.2_path=/content/dam/we-retail
property=jcr:content/metadata/dc:format
property.value=image/png
p.limit=-1

 

Hope it helps!

Thanks!

Nupur

Avatar

Level 1

if I give path=/content/dam it returns error for me. Only If I give complete asset folder path I get the resultset. But I do not know which all folders might have the asset with the required property. It can be under any folder under /content/dam and can be under under multiple child folders like /content/dam/abc/asset.jpg or /content/dam/abc/def/asset.jpg or content/dam/ghi/asset.jpg. Only the root folder I know which is /content/dam

Avatar

Community Advisor

Hi @AnshuSingh2701 

 

Can you put your error here? Also, I guess the error is traversal error and you might have to index the property you are searching as the number of assets must be large in number.

 

I would be able to tell better after looking at your exception.

 

Avatar

Level 1
yes it is traversal issue. I am not able to get the result for large data set.

Avatar

Community Advisor

Hi @AnshuSingh2701 

 

You will have to add your property to OOTB dam index so that properties on which your search is working are indexed and your resultset is retrived via index instead of traversing the whole dam content structure.

/oak:index/damAssetLucene is OOTB dam index where you have to add your properties under /oak:index/damAssetLucene/indexRules/dam:Asset/properties and reindex this index afterwards.

 

There are some references you must read before making any change in index:
https://docs.adobe.com/content/help/en/experience-manager-64/deploying/deploying/queries-and-indexin...

https://jackrabbit.apache.org/oak/docs/query/lucene.html(This will give you fair idea on how you should add the property)

 

Hope it helps!

Thanks!

Nupur

Avatar

Community Advisor

Hi @AnshuSingh2701 

 

   Can you share the query you are trying now ? If you are giving path as /content/dam , it should eventually look under evry folder below dam . So the issue might be with the rest of the properties you are giving. @Nupur_Jain has put some sample queries. Please check if any of those helps ?

 

Thanks

Veena

Avatar

Correct answer by
Community Advisor

@AnshuSingh2701,

Where you are querying, /content/dam, will show you 0 results, it maybe because your AEM platform has reached the maximum node traversal, LimitReads of 10,000. You will need to change the limit from your environment's system/console, but please be warned as when you increase this number, it may affect the overall performance.

http://localhost:4502/system/console/jmx/org.apache.jackrabbit.oak%3Aname%3Dsettings%2Ctype%3DQueryE...

Screenshot 2020-07-24 at 18.11.47.png

Give this a try.