内容搜索与索引

AEMas a Cloud Service中的更改

借助AEMas a Cloud Service,Adobe正在从以AEM实例为中心的模型转变为基于服务的视图,视图中包含n-x AEM容器,由Cloud Manager中的CI/CD管道驱动。 必须在部署之前指定索引配置,而不是在单个AEM实例上配置和维护索引。 生产中的配置更改显然会破坏CI/CD策略。 索引更改也是如此,因为如果未指定测试和重新编制索引,在将索引投入生产之前,它会影响系统稳定性和性能。

以下是与AEM 6.5及更早版本相比的主要更改列表:

  1. 用户将无法再访问单个AEM实例的索引管理器来调试、配置或维护索引。 它仅用于本地开发和内部部署。

  2. 用户不会更改单个AEM实例上的索引,他们也不必再担心一致性检查或重新编制索引。

  3. 通常,在进入生产之前会先启动索引更改,以便不会绕过Cloud Manager CI/CD管道中的质量网关,而不会影响生产中的业务KPI。

  4. 所有相关量度(包括生产中的搜索性能)将在运行时提供给客户,以便提供有关搜索和索引主题的整体视图。

  5. 客户将能够根据自己的需求设置警报。

  6. SRE正在监测系统健康24/7,将根据需要和尽早采取行动。

  7. 索引配置通过部署进行更改。 索引定义更改的配置方式与其他内容更改类似。

  8. 在AEMas a Cloud Service的高级别,通过引入 蓝绿色部署模型 将存在两组索引:一个针对旧版本设置(蓝色),另一个针对新版本设置(绿色)。

  9. 客户可以在Cloud Manager内部版本页面上查看索引作业是否已完成,并在新版本准备好接收流量时收到通知。

  10. 限制:

  • 目前,AEMas a Cloud Service的索引仅支持lucene类型的索引的索引管理。
  • 仅支持标准分析程序(即随产品一起提供的分析程序)。 不支持自定义分析程序。

使用方法

定义索引可包括以下三个用例:

  1. 添加新的客户索引定义
  2. 更新现有索引定义。 这实际上意味着添加现有索引定义的新版本
  3. 删除冗余或过时的现有索引。

对于以上第1点和第2点,您需要在相应的Cloud Manager发行计划中创建新的索引定义,以作为自定义代码库的一部分。 有关更多信息,请参阅 部署到AEMas a Cloud Service文档.

准备新的索引定义

注意

例如,如果自定义现成的索引 damAssetLucene-6,请从 Cloud Service环境 并在顶部添加自定义,这可确保不会意外删除所需的配置。 例如, tika 节点下 /oak:index/damAssetLucene-6/tika 是必需的节点,也应是自定义索引的一部分,并且它不存在于Cloud SDK中。

您需要按照以下命名模式准备包含实际索引定义的新索引定义包:

<indexName>[-<productVersion>]-custom-<customVersion>

那就得下去 ui.apps/src/main/content/jcr_root. 目前不支持子根文件夹。

上述示例中的包将作为 com.adobe.granite:new-index-content:zip:1.0.0-SNAPSHOT.

注意

包含索引定义的任何内容包都应在内容包的属性文件中设置以下属性,该属性位于 /META-INF/vault/properties.xml:

noIntermediateSaves=true

部署索引定义

注意

Jackrabbit Filevault Maven包插件版本存在已知问题 1.1.0 不允许您添加 oak:index 至模块 <packageType>application</packageType>. 您应该更新到该插件的最新版本。

索引定义现在标记为自定义并已版本化:

  • 索引定义本身(例如 /oak:index/ntBaseLucene-custom-1)

因此,为了部署索引,索引定义(/oak:index/definitionname)需要通过 ui.apps 通过Git和Cloud Manager部署过程。

添加新索引定义后,需要通过Cloud Manager部署新应用程序。 部署后,将启动两个作业,负责将索引定义分别添加(并在需要时合并)到MongoDB和Azure区段存储,以供创作和发布。 在蓝绿色切换开始之前,正在使用新索引定义重新索引基础存储库。

小贴士

有关AEMas a Cloud Service所需包结构的更多详细信息,请参阅此文档 AEM项目结构。

使用蓝绿色部署的索引管理

什么是索引管理

索引管理是关于添加、删除和更改索引。 更改 定义 索引的更改速度很快,但应用更改(通常称为“构建索引”,或者对于现有索引,则称为“重新索引”)需要时间。 它不是瞬间的:必须扫描存储库,才能将数据编入索引。

什么是蓝绿色部署

蓝绿色部署可减少停机时间。 它还允许零停机升级,并提供快速回滚。 应用程序的旧版本(蓝色)与应用程序的新版本(绿色)同时运行。

只读和读写区域

存储库的某些区域(存储库的只读部分)在应用程序的旧(蓝色)和新(绿色)版本中可能不同。 存储库的只读区域通常为“/app"和"/libs" 在以下示例中,斜体用于标记只读区域,而粗体用于读写区域。

  • /
  • /apps(只读)
  • /content
  • /libs(只读)
  • /oak:index
  • /oak:index/acme。
  • /jcr:system
  • /system
  • /var

存储库的读写区域在应用程序的所有版本之间共享,而对于应用程序的每个版本,都有一组特定的 /apps/libs.

无蓝绿色部署的索引管理

在开发期间或使用内部部署安装时,可以在运行时添加、删除或更改索引。 索引一经可用即可使用。 如果某个索引尚未在旧版本的应用程序中使用,则通常会在计划的停机时间内构建该索引。 删除索引或更改现有索引时也会发生同样的情况。 删除索引后,该索引一旦删除就变得不可用。

使用蓝绿色部署进行索引管理

使用蓝绿色部署时,不会出现停机。 但是,对于索引管理,这要求索引仅供某些版本的应用程序使用。 例如,在应用程序版本2中添加索引时,您不希望该索引被应用程序版本1使用。 而删除索引的情况则相反:在版本1中,仍需要在版本2中删除索引。 在更改索引定义时,我们希望旧版本的索引仅用于版本1,新版本的索引仅用于版本2。

下表显示了五个索引定义:索引 cqPageLucene 在两个版本中使用,而索引 damAssetLucene-custom-1 仅在版本2中使用。

注意

<indexName>-custom-<customerVersionNumber> AEMas a Cloud Service需要将其标记为现有索引的替换项。

索引 现成索引 在版本1中使用 在版本2中使用
/oak:index/damAssetLucene
/oak:index/damAssetLucene-custom-1 是(自定义)
/oak:index/acme.product-custom-1
/oak:index/acme.product-custom-2
/oak:index/cqPageLucene

每次更改索引时,版本号都会递增。 为避免自定义索引名称与产品本身的索引名称发生冲突,自定义索引以及对现成索引的更改必须以 -custom-<number>.

对现成索引的更改

Adobe更改现成索引(如“damAssetLucene”或“cqPageLucene”)后,将新索引命名为 damAssetLucene-2cqPageLucene-2 创建,或者,如果已自定义索引,则自定义索引定义将与现成索引中的更改合并,如下所示。 更改的合并会自动进行。 这意味着如果现成的索引发生更改,您无需执行任何操作。 但是,以后可以再次自定义索引。

索引 现成索引 在版本2中使用 在版本3中使用
/oak:index/damAssetLucene-custom-1 是(自定义)
/oak:index/damAssetLucene-2-custom-1 是(自动从damAssetLucene-custom-1和damAssetLucene-2合并)
/oak:index/cqPageLucene
/oak:index/cqPageLucene-2

当前限制

目前,仅支持类型索引的索引管理 lucene.

添加索引

添加名为 /oak:index/acme.product-custom-1 要在新应用程序版本及更高版本中使用,必须按如下方式配置索引:

acme.product-1-custom-1

在索引名称前添加自定义标识符,然后添加一个圆点(.)。 标识符的长度应介于2到5个字符之间。

如上所述,这可确保索引仅供新版本的应用程序使用。

更改索引

更改现有索引时,需要使用更改的索引定义添加新索引。 例如,请考虑现有索引 /oak:index/acme.product-custom-1 中,将会更改。 旧索引存储在 /oak:index/acme.product-custom-1,并且新索引存储在 /oak:index/acme.product-custom-2.

应用程序的旧版本使用以下配置:

/oak:index/acme.product-custom-1

新版本的应用程序使用以下(已更改)配置:

/oak:index/acme.product-custom-2

注意

AEMas a Cloud Service上的索引定义可能与本地开发实例上的索引定义不完全匹配。 开发实例没有Tika配置,而AEMas a Cloud Service实例有一个。 如果您使用Tika配置自定义索引,请保留Tika配置。

撤消更改

有时,需要恢复索引定义中的更改。 原因可能是错误地做出了改变,或者不再需要改变。 例如,索引定义 damAssetLucene-8-custom-3 已错误创建且已部署。 因此,您可能希望还原到之前的索引定义 damAssetLucene-8-custom-2. 为此,您需要添加一个名为 damAssetLucene-8-custom-4 包含上一个索引的定义, damAssetLucene-8-custom-2.

删除索引

以下内容仅适用于自定义索引。 不能删除产品索引,因为AEM使用了这些索引。

如果要在更高版本的应用程序中删除索引,您可以定义一个空索引(一个从未使用过且不包含任何数据的空索引),并使用新名称。 在本例中,您可以将其命名为 /oak:index/acme.product-custom-3. 这将替换索引 /oak:index/acme.product-custom-2. 一次 /oak:index/acme.product-custom-2 系统将删除空索引 /oak:index/acme.product-custom-3 之后也可以删除。 此类空索引的示例有:

<acme.product-custom-3
        jcr:primaryType="oak:QueryIndexDefinition"
        async="async"
        compatVersion="2"
        includedPaths="/dummy"
        queryPaths="/dummy"
        type="lucene">
        <indexRules jcr:primaryType="nt:unstructured">
            <rep:root jcr:primaryType="nt:unstructured">
                <properties jcr:primaryType="nt:unstructured">
                    <dummy
                        jcr:primaryType="nt:unstructured"
                        name="dummy"
                        propertyIndex="{Boolean}true"/>
                </properties>
            </rep:root>
        </indexRules>
    </acme.product-custom-3>

如果不再需要自定义现成索引,则必须复制现成索引定义。 例如,如果您已经部署 damAssetLucene-8-custom-3,但不再需要自定义设置,并且希望切换回默认 damAssetLucene-8 索引,则必须添加索引 damAssetLucene-8-custom-4 包含的索引定义 damAssetLucene-8.

索引优化

Apache Jackrabbit Oak支持灵活的索引配置,以高效处理搜索查询。 索引对于较大的存储库尤其重要。 请确保所有查询都有适当的索引作为备份。 没有合适索引的查询可能会读取数千个节点,这些节点随后将记录为警告。 此类查询应通过分析日志文件来识别,以便优化索引定义。 请参阅 本页 以了解更多信息。

AEMas a Cloud Service上的Lucene全文索引

全文索引 /oak:index/lucene-2 可能会变得非常大,因为默认情况下,它会为AEM存储库中的所有节点编制索引。 在Adobe计划停用此索引后,将不再在AEMas a Cloud Service的产品端使用此索引,因此不应要求运行客户代码。 对于具有常用Lucene索引的AEMas a Cloud Service环境,Adobe正在与客户单独合作,以采用协调的方法来弥补此索引,并使用更好、优化的索引。 客户无需执行任何操作,而无需进一步通知Adobe。 AEMas a Cloud Service客户在需要对此优化采取行动时,将会收到Adobe通知。 如果自定义查询需要此索引,则作为临时解决方案,应使用其他名称(例如, /oak:index/acme.lucene-1-custom-1,如所述 此处.
默认情况下,此优化不适用于在内部托管或由Adobe Managed Services管理的其他AEM环境。

查询优化

查询性能 工具允许您同时查看常用和缓慢的JCR查询。 此外,它还能够分析查询并显示各种有关的信息,尤其是当某个索引正在用于此查询时。

与AEM On Premise不同,AEM as a Cloud Service不显示 查询性能 工具。 它现在可通过以下位置的开发人员控制台(在Cloud Manager中)获取: 查询 选项卡。

在此页面上