Older version of AEM/ CQ, Jackrabbit index the content by default. But Oak doesn't index content by default. We need to do it like how we do indexing for a DataBase.
Why do we need to index?
When a JCR query gets executed, usually it searches the index first. If there is no index, the query executes for the entire content. This is time consuming and an overhead for the AEM. But keep in mind, if the frequency of queries executed are less, we can ignore the indexing.
Let us understand the Oak and AEM indexing in detail here.
In fact, there are three main types of indexes available in Oak
Indexing modes
Different versions of the node data is compared to find indexes. The indexing mode defines how comparison is performed, and when the index content gets updated. Below given the indexing mode and details.
Sync Vs Async Vs Nrt
*Click on image to view it big and more clear.
Below given various indexes in detail.
Property Index - Not a full-text indexing method. Index definition is stored in the repository itself.
Configuration
type: property;
propertyNames: jcr:uuid (of type Name)
Ordered Index - [deprecated] - This is an extension of the Property index. It keeps the order of the indexed property persistent in the repository.
Configuration
type: ordered;
propertyNames: jcr:lastModified
Lucene Full Text Index - This is a full text index method, which is asynchronous too.
Configuration
type: lucene ;
async: async
Lucene Property Index - This is not a full-text indexing.
Configuration
type: lucene ;
async: async ;
fulltextEnabled: false;
includePropertyNames: ["alias"]
The Solr Index - This is a full-text search but it can also be used to index search by path, property restrictions and primary type restrictions, which means the Solr index in Oak can be used for any type of JCR query.
Configuration
type:solr;
async:async;
reindex:true
Traversal Index - When no indexing is done; All content nodes are traversed to find matches to the query, slower and overhead to AEM.
A tabular version is given below
Video description of the blog given below.
Read about AEM 6.4 Oak Queries and Indexing
Best Practices for Queries and Indexing
Why do we need to index?
When a JCR query gets executed, usually it searches the index first. If there is no index, the query executes for the entire content. This is time consuming and an overhead for the AEM. But keep in mind, if the frequency of queries executed are less, we can ignore the indexing.
Let us understand the Oak and AEM indexing in detail here.
In fact, there are three main types of indexes available in Oak
- Property
- Lucene
- Solr
- XPath (recommended)
- SQL-2
- SQL (deprecated)
- JQOM
- QueryBuilder APIs (recommended)
- Using XPath (recommended)
- Using SQL2
Indexing modes
Different versions of the node data is compared to find indexes. The indexing mode defines how comparison is performed, and when the index content gets updated. Below given the indexing mode and details.
Sync Vs Async Vs Nrt
- Async - When we index in async mode, results returned by index may not always reflect the exact up to date state of the repository.
- Sync - Sync Index ensures that index is updated as part of each commit.
- NRT - This method indicates that index is a near real time index.
*Click on image to view it big and more clear.
[Indexing in AEM 6.4] |
Below given various indexes in detail.
Property Index - Not a full-text indexing method. Index definition is stored in the repository itself.
Configuration
type: property;
propertyNames: jcr:uuid (of type Name)
Ordered Index - [deprecated] - This is an extension of the Property index. It keeps the order of the indexed property persistent in the repository.
Configuration
type: ordered;
propertyNames: jcr:lastModified
Lucene Full Text Index - This is a full text index method, which is asynchronous too.
Configuration
type: lucene ;
async: async
Lucene Property Index - This is not a full-text indexing.
Configuration
type: lucene ;
async: async ;
fulltextEnabled: false;
includePropertyNames: ["alias"]
The Solr Index - This is a full-text search but it can also be used to index search by path, property restrictions and primary type restrictions, which means the Solr index in Oak can be used for any type of JCR query.
Configuration
type:solr;
async:async;
reindex:true
Traversal Index - When no indexing is done; All content nodes are traversed to find matches to the query, slower and overhead to AEM.
A tabular version is given below
[AEM Oak Indexing] |
Video description of the blog given below.
Read about AEM 6.4 Oak Queries and Indexing
Best Practices for Queries and Indexing