Oak-run.jar索引用例

Oak-run支持在命令行上为用例编制索引,无需通过AEM JMX控制台协调执行这些用例。

使用oak-run.jar索引命令方法管理Oak索引的首要好处是:

  1. Oak-run index命令为AEM 6.4提供了新的索引编制工具集。
  2. Oak-run减少了重新索引的时间,减少了在较大的存储库中重新索引的时间。
  3. Oak-run减少了AEM中重新索引时的资源消耗,从而整体提高了系统性能。
  4. Oak-run提供带外重新索引,支持必须有生产可用的情况,并且不能容忍维护或停机,否则需要重新索引。

以下部分将提供示例命令。 oak-run index命令支持所有NodeStore和BlobStore设置。 下面提供的示例围绕具有FileDataStore和SegmentNodeStore的设置。

用例1 —— 索引一致性检查

这是与索引损坏相关的用例。 在某些情况下,无法确定哪些索引已损坏。 因此,Adobe提供了以下工具:

  1. 对所有索引执行索引一致性检查,并提供索引有效和无效的报告;
  2. 即使AEM不可访问,工具也可用;
  3. 易于使用。

可通过--index-consistency-check操作检查损坏的索引:

java -jar oak-run*.jar index --fds-path=/path/to/datastore  /path/to/segmentstore/ --index-consistency-check

这将在indexing-result/index-consistency-check-report.txt中生成报告。 有关示例报告,请参阅以下内容:

Valid indexes :
        - /content/oak:index/enablementResourceName
        - /oak:index/cqProjectLucene
        - /oak:index/cqTagLucene
        - /oak:index/lucene
        - /oak:index/ntBaseLucene
        - /oak:index/socialLucene
    Invalid indexes :
        - /oak:index/atDamIndex
        - /oak:index/atIndex
        - /oak:index/cqPageLucene
        - /oak:index/damAssetLucene
        - /oak:index/groups
        - /oak:index/slingeventJob
        - /oak:index/users
        - /oak:index/workflowDataLucene
    Ignored indexes as these are not of type lucene:
        - /oak:index/acPrincipalName
        - /oak:index/active

优势

现在,支持部门和系统管理员可以使用此工具快速确定哪些索引已损坏,然后重新为它们编制索引。

用例2 —— 索引统计数据

为了诊断查询性能Adobe的某些情况,通常需要现有的索引定义,请从客户设置中索引相关统计信息。 到目前为止,这些信息分散在多个资源中。 为了简化疑难解答,Adobe创建了以下工具:

  1. 在单个JSON文件中转储系统上存在的所有索引定义;

  2. 从现有索引中转储重要统计信息;

  3. 转储索引内容以进行脱机分析;

  4. 即使AEM不可访问,也会可用

现在,可以通过以下操作索引命令执行上述操作:

  • --index-info -收集和转储与索引相关的各种统计信息

  • --index-definitions -收集和转储索引定义

  • --index-dump -转储索引内容

请参见下面的示例,了解命令在实践中的工作方式:

java -jar oak-run*.jar index --fds-path=/path/to/datastore  /path/to/segmentstore/ --index-info --index-definitions --index-dump

将在indexing-result/index-info.txtindexing-result/index-definitions.json中生成报告

此外,还通过Web控制台提供了相同的详细信息,这些详细信息将作为配置转储zip的一部分。 可在以下位置访问它们:

https://serverhost:serverport/system/console/status-oak-index-defn

优势

此工具允许快速收集与索引或查询问题相关的所有所需详细信息,并缩短提取此信息所花费的时间。

用例3 —— 重新索引

根据场景,在某些情况下需要执行重新索引。 当前,通过CRXDE或Index Manager用户界面将索引定义节点中的reindex标志设置为true即可重新建立索引。 设置标志后,异步完成重新索引。

有关重新编制索引的注意事项有:

  • 与所有内容均为本地的SegmentNodeStore设置相比,在DocumentNodeStore设置上重新索引的速度要慢得多;

  • 在当前设计下,当重新索引发生时,异步索引器被阻止,所有其他异步索引都变旧,并且在索引期间不获取更新。 因此,如果系统正在使用,用户可能看不到最新的结果;

  • 重新索引涉及遍历整个存储库,这会给AEM设置带来高负载,从而影响最终用户体验;

  • 对于DocumentNodeStore安装,重新编制索引可能需要相当长的时间,如果在操作过程中与Mongo数据库的连接失败,则必须从头开始重新编制索引;

  • 在某些情况下,由于文本提取,重新索引可能需要很长时间。 这主要针对具有大量PDF文件的设置,在这些设置中,文本提取所花的时间会影响索引时间。

为了实现这些目标,Oak-run索引工具支持不同的重新索引模式,这些模式可以根据需要使用。 oak-run index命令具有以下优点:

  • 带外重新索引 - oak-run重新索引可以与正在运行的AEM安装程序分开进行,因此,它可以最大限度地减少对正在使用的AEM实例的影响;

  • 跨通道重新索引 -重新索引不影响索引编制操作。这意味着异步索引器可以继续为其他索引编制索引;

  • 简化的DocumentNodeStore安装的重新索引 - DocumentNodeStore 对于安装,可以使用一个命令进行重新索引,这可确保以最佳方式重新索引;

  • 支持更新索引定义和引入新的索引定义

重新索引- DocumentNodeStore

对于DocumentNodeStore安装,可通过单个oak-run命令重新建立索引:

java -jar oak-run*.jar index --reindex --index-paths=/oak:index/lucene --read-write --fds-path=/path/to/datastore mongodb://server:port/aem

这提供以下优点

  • 对运行AEM实例的影响最小。 大多数读取操作都可从从属服务器执行,而运行AEM高速缓存不会因重新索引所需的所有遍历而受到任何影响;
  • 用户还可以通过--index-definitions-file选项提供新索引或更新索引的JSON。

重新索引- SegmentNodeStore

对于SegmentNodeStore安装,可通过以下方式之一重新建立索引:

在线重新索引- SegmentNodeStore

按照已建立的方式,通过设置reindex标志来重新建立索引。

联机重新索引- SegmentNodeStore -AEM实例正在运行

对于SegmentNodeStore安装,只有一个进程可以以读写模式访问段文件。 由于这一原因,在oak-run索引中的一些操作需要额外的手动步骤。

这将涉及以下内容:

  1. 步骤文本

  2. oak-run连接到AEM在只读模式下使用的同一存储库并执行索引。 有关如何实现此目的的示例:

    java -jar oak-run-1.7.6.jar index --fds-path=/Users/dhasler/dev/cq/quickstart/target/crx-quickstart/repository/datastore/ --checkpoint 26b7da38-a699-45b2-82fb-73aa2f9af0e2 --reindex --index-paths=/oak:index/lucene /Users/dhasler/dev/cq/quickstart/target/crx-quickstart/repository/segmentstore/
    
  3. 最后,通过IndexerMBean#importIndex操作,从oak-run在运行上述命令后保存索引文件的路径导入创建的索引文件。

在这种情况下,您不必停止AEM服务器或配置任何新实例。 但是,由于索引涉及遍历整个存储库,因此会增加安装的I/O负载,从而对运行时性能产生负面影响。

联机重新索引- SegmentNodeStore -AEM实例已关闭

对于SegmentNodeStore安装,可通过单个oak-run命令重新建立索引。 但是,AEM实例需要关闭。

您可以使用以下命令触发重新索引:

java -jar oak-run*.jar index --reindex --index-paths=/oak:index/lucene --read-write --fds-path=/path/to/datastore  /path/to/segmentstore/ 

此方法与上述方法的区别在于检查点创建和索引导入是自动完成的。 不利之处在于AEM需要在此过程中停下。

带外重新索引- SegmentNodeStore

在此用例中,您可以对克隆的安装程序执行重新索引,以最大限度地减少对运行的AEM实例的影响:

  1. 通过JMX操作创建检查点。 要执行此操作,可转到JMX控制台并搜索CheckpointManager。 然后,单击​createCheckpoint(long p1)​操作,使用高值在几秒内过期(例如,2592000)。

  2. crx-quickstart文件夹复制到新计算机

  3. 通过oak-run索引命令执行重新索引

  4. 将生成的索引文件复制到AEM服务器

  5. 通过JMX导入索引文件。

在此用例下,假定数据存储可在另一个实例上访问,如果FileDataStore放在基于云的存储解决方案(如EBS)上,则此实例可能无法访问。 这不包括FileDataStore也克隆的方案。 如果索引定义不执行全文索引,则不需要访问DataStore

用例4 —— 更新索引定义

目前,可以通过ACS Ensure Index软件包发送索引定义更改。 这允许通过内容包发送索引定义,后者需要通过将reindex标志设置为true来执行重新索引。

这对于重新编制索引不需要很长时间的较小安装很有效。 但是,对于大型存储库,重新构建索引将在相当长的时间内完成。 对于此类情况,我们现在可以使用oak-run索引工具。

Oak-run现在支持以JSON格式提供索引定义,并在带外模式下创建索引,在带外模式下,实时实例不会执行任何更改。

此用例需要考虑的过程是:

  1. 开发人员将更新本地实例上的索引定义,然后通过--index-definitions选项生成索引定义JSON文件

  2. 更新后的JSON随后将交给系统管理员

  3. 系统管理员遵循带外方法,在其他安装上准备索引

  4. 完成此操作后,将在运行的AEM安装上导入生成的索引文件。

On this page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now