内容搜索与索引

AEM中Cloud Service的更改

以AEM为Cloud Service,Adobe正在从以AEM实例为中心的模型转变为基于服务的视图,其中n-x AEM容器由云管理器中的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. 在AEM作为Cloud Service的高度上,引入Blue-Green部署模型后,将存在两组索引:一个用于旧版本(蓝色),另一个用于新版本(绿色)。

  9. 客户可以在Cloud Manager构建页面上查看索引编制作业是否完成,并在新版本准备就绪后收到通知。

  10. 限制:目前,AEM asCloud Service上的索引管理仅支持lucene类型的索引。

使用方法

定义索引可以包括以下3种用例:

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

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

准备新索引定义

您需要准备一个包含实际索引定义的新索引定义包,遵循以下命名模式:

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

然后,它需要位于ui.apps/src/main/content/jcr_root下。 目前不支持子根文件夹。

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

部署索引定义

NOTE

Jackrabbit Filevault Maven包插件版本​1.1.0​存在已知问题,它不允许您向<packageType>application</packageType>的模块添加oak:index。 要解决此问题,请使用版本​1.0.4

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

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

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

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

TIP

有关AEM作为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。

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

NOTE

<indexName>-custom-<customerVersionNumber> 需要AEM作为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-3。 这将替换索引/oak:index/acme.product-custom-2。 系统删除/oak:index/acme.product-custom-2后,还可以删除空索引/oak:index/acme.product-custom-3

添加索引

要添加名为“/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

索引可用性/容错

建议为极其重要的功能创建重复索引(请注意上述索引的命名规范),因此,在索引损坏或任何此类无法预见的事件下,有一个回退索引可用于响应查询。

在此页面上