<

Simplified Index Management

Overview

Note: this feature is currently in Beta mode.

If you have any issues or questions, please open a ticket.

Simplified Index Management simple way to define custom indexes and customize out-of-the-box (OOTB) indexes, using one JSON file. There is no need to copy definitions, or to explicitly define versions. Customizations of index definitions are automatically merged with the latest out-of-the-box index, and if needed, a new index version is automatically created.

Indexes created using simplified index management have a property "mergeInfo" that links here. For more information about indexing, see: Content Search and Indexing.

Run Modes

There are two modes of operation. While the diff.json file is the same in both modes, the configuration and usage of simplified index management is slightly different.

Immediate Mode Pipeline Mode

Immediate Mode

This is used when running AEM locally, or when using RDE (Rapid Development Environments) for AEM Cloud Service, without pipeline. In this mode, the changes are applied immediately, and the pipeline is not used.

Requirements: AEM as a Cloud Service 2025.03 (release 24893) or later, with Apache Jackrabbit Oak version 1.92 or later.

Changes in CRX/DE to the diff.index / diff.json file immediately create a new version of the respective index, and immediately reindexing starts in the environment.

Notice
If the respository is large, reindexing can take some time. Do not use this mode for large repositories. Specially, do not use this mode for DEV environments in AEM as a Cloud Service.

Configuration

  • Open CRX/DE.
  • Navigate to the path /oak:index.
  • Create a new node named "diff.index" of type "oak:QueryIndexDefinition".
  • Then set the property "type" to "disabled".
  • Create a new node named "diff.json" of type "nt:file".
  • Copy the content of the diff index into this file.
  • Save the changes.
  • Wait a few seconds, and refresh.
  • You should see a new version of the respective index that was created.

Tools

Step by Step Migration Guide

This guide assumes you already have an AEM as a Cloud Service program with custom or customized indexes.

Create the Diff Index

To create the diff index, open the AEM as a Cloud Service "Developer Console". Select "Status Dump": "Oak Indexes", and "Output Format": "JSON". Click "Get Status", and then click on the "Download" button at the top right. This will open the raw JSON file in a new tab. Select the whole content, and copy it to the clipboard. Then open the Index Definition Analyzer. and paste the content into the "Index Definitions (JSON)" textarea. Click "Analyze". On the right side, you will get the diff index. Verify it contains the changes you want to apply. If you manually changed the diff index, you can verify it by opening the Diff Index Verifier.

Example diff.json File

The following is an example of a diff.json file. It contains a customization for the damAssetLucene index, and a fully custom index named "custom.slingFolderNodeNames". For fully custom indexes, the name needs to contain a dot. The index name does not contains the "/oak:index/" prefix. Also, fully custom indexes need to have an "includedPaths" property that is not empty, and set to a path that doesn't include "/apps" or "/libs". It is best to set the "queryPaths" to the same value as the "includedPaths".

{
    "damAssetLucene": {
        "indexRules": {
            "dam:Asset": {
                "properties": {
                    "test1": {
                        "name": "test",
                        "propertyIndex": true
                    }
                }
            }
        }
    },
    "custom.slingFolderNodeNames": {
        "async": [ "async" ],
        "compatVersion": 2,
        "evaluatePathRestrictions": true,
        "includedPaths": [ "/content/dam" ],
        "queryPaths": [ "/content/dam" ],
        "type": "lucene",
        "indexRules": {
            "sling:Folder": {
                "indexNodeName": true
            }
        }
    }
}

Versioning and Removal

Merge Rules

The following rules apply when merging a diff with an OOTB index:

Top-Level Property Merging

The following rules apply to the properties at the top level (properties of the index):

Example:

{
    "acmeAssetsLucene": {
        "tags": [ "additionalTag" ],
        "indexRules": {
            "acme:Asset": {
                "properties": {
                    "newProperty": {
                        "name": "newProperty",
                        "propertyIndex": true
                    }
                }
            }
        }
    }
}

Indexed Property Rules

Merging Details

In addition, the following rules are used when merging. In most cases, they are irrelevant, but listed here for completeness.

Help

If you have any issues or questions, please please open a ticket.