如何重新索引同步 AEM 索引 | AEM,Oak

要重新索引同步AEM索引,只需将reindex属性设置为​ true ​即可。 但是,这可能会导致Oak实例挂起,在这种情况下,您需要将索引发送到后台线程。 本文介绍如何做到这一点。

描述 description

环境

Adobe Experience Manager

问题/症状

如何正确地重新索引同步 Oak 索引而不导致停机?

分辨率 resolution

通过简单地将reindex属性设置为​ true ​来重新索引同步索引会导致同步操作,这可能会导致Oak实例挂起。

要避免出现这种情况,请将索引发送到后台线程。 请按照以下步骤操作:

步骤1:在后台线程中重新索引

  1. 在要启用异步索引的属性索引的索引定义上从 CRXDE Lite 设置以下属性:

    code language-none
    /oak:index/<property index>
    reindex=true
    reindex-async=true
    
  2. 要验证上述是否刷新了节点,应该设置 async="async-reindex"

  3. PropertyIndexAsyncReindex MBean.
    上调用startPropertyIndexAsyncReindex

    这将启动搜索此类索引的后台作业。

    Post调用,您应该会看到一条日志行重新索引将被执行……

  4. 重新索引完成后,重新索引标志将被重置为​ false

  5. 重新调用步骤 3 以将索引更改回同步索引。 如果未删除异步标志,则可能必须多次调用Mbean(如果同时发生影响此索引的更改,则可能会发生这种情况。)

    注意: 只有async="async-reindex"将被删除,因为它控制索引将发生在哪个线程上。

    reindex-async属性只是一个不会自动更改的配置标志。

    有个办法是您为控制所有未来重新索引的特定索引定义设置一次该属性。

    则它预计会保持,您就不需要再次触控。

步骤2:删除重新索引检查点(仅限AEM 6.2和更早版本)

在异步重新索引的过程中,将创建一个存储库检查点。
索引任务完成后,必须按如下所述将其释放,以确保以后顺利进行修订垃圾收集:

  1. 首先,打开 检查点管理器 MBean:

    在MongoMK上 — /system/console/jmx/org.apache.jackrabbit.oak%3Aname%3DDocument+node+store+checkpoint+management%2Ctype%3DCheckpointManger

    在TarMK上 — /system/console/jmx/org.apache.jackrabbit.oak%3Aname%3DSegment+node+store+checkpoint+management%2Ctype%3DCheckpointManger

  2. 调用listCheckpoints()操作。

  3. 通过 name=async-reindex 属性找到检查点行。

  4. 将其id值复制到剪贴板:

    在MongoMK上,它类似于: r1234567aaaa-0-1

    在TarMK上,它类似于: 6eac07d0-fe27-4d16-82f8-6d5da4cefd67

  5. 然后打开 releaseCheckpoint() 操作。

  6. 将复制的id粘贴为p1,然后单击 调用

  7. 此步骤将释放检查点。

recommendation-more-help
3d58f420-19b5-47a0-a122-5c9dab55ec7f