The Simple search implementation are the materials from the Adobe Summit lab AEM Search Demystified. This page contains the materials from this lab. For a guided tour of the lab, please view the Lab workbook in the Presentation section of this page.
The Chapter links below assume the Initial Packages are installed on AEM Author at
Corrections and clarifications from the lab discussions and answers to follow-up questions from attendees.
How to stop re-indexing?
Re-indexing can be stopped via the IndexStats MBean available via AEM Web Console > JMX
abortAndPause()to abort the re-indexing. This will lock the index to further re-indexing until
resume()will restart the indexing process.
How can oak indexes support multiple tenants?
Oak supports placing indexes through-out the content tree, and these indexes will only index within that sub-tree. For example
/content/site-a/oak:index/cqPageLucene could be create to index content only under
An equivalent approach is to use the
queryPaths properties on an index under
/oak:index. For example:
The considerations with this approach are:
/oak:index/cqPageLucene) will ALSO index the data, resulting in duplicative-ingestion and disk use cost.
Where is a list of all available Analyzers?
Oak exposes a set of lucene-provides analyzer configuration elements for use in AEM.
How to search for Pages and Assets in the same query?
New in AEM 6.3 is the ability to query for multiple node-types in the same provided query. The following QueryBuilder query. Note that each “sub-query” can resolve to its own index, so in this example, the
cq:Page sub-query resolves to
/oak:index/cqPageLucene and the
dam:Asset sub-query resolves to
group.p.or=true group.1_group.type=cq:Page # add all page restrictions to this group group.2_group.type=dam:Asset # add all asset restrictions to this group
results in the following query and query plan:
QUERY:(//element(*,%20cq:Page?lang=en) | //element(*, dam:Asset)) PLAN: [cq:Page] as [a] /* lucene:cqPageLucene(/oak:index/cqPageLucene?lang=en) *:* */ union [dam:Asset] as [a] /* lucene:damAssetLucene(/oak:index/damAssetLucene?lang=en) *:* */
How to search over multiple paths in the same query?
New in AEM 6.3 is the ability to query across multiple paths in the same provided query. The following QueryBuilder query. Note that each “sub-query” may resolve to its own index.
group.p.or=true group.1_group.type=cq:Page group.1_group.path=/content/docs/en/6-2 # add all page restrictions to this group group.2_group.type=cq:Page group.2_group.path=/content/docs/en/6-3 # add all asset restrictions to this group
results in the following query and query plan
QUERY: (/jcr:root/content/docs/en/_x0036_-2//element(*,%20cq:Page?lang=en) | /jcr:root/content/docs/en/_x0036_-3//element(*, cq:Page)) PLAN: [cq:Page] as [a] /* traverse "/content/docs/en/6-2//*" where isdescendantnode([a], [/content/docs/en/6-2]) */ union [cq:Page] as [a] /* traverse "/content/docs/en/6-3//*" where isdescendantnode([a], [/content/docs/en/6-3]) */