Oak-run.jar索引使用案例

Oak-run支援在命令列上建立使用案例索引,而不需透過AEM的JMX主控台協調這些使用案例的執行。

使用oak-run.jar index命令方法管理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 Console也提供相同的詳細資訊,這些資訊將會包含在設定轉儲zip中。 您可從下列位置存取這些檔案:

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

優點

此工具可快速收集與索引或查詢問題相關的所有必要詳細資訊,並縮短擷取此資訊的時間。

使用案例3 —— 重新索引

根據藍本,在某些情況下需要執行重新索引。 當前,通過通過CRXDE或通過「索引管理器」用戶介面將reindex標誌設定為索引定義節點中的true ,即可完成重新索引。 設定旗標後,會以非同步方式重新建立索引。

關於重新編製索引,有些地方需要注意:

  • DocumentNodeStore設定中,與所有內容都是本機的SegmentNodeStore設定相比,重新建立索引的速度要慢得多;

  • 在目前的設計中,重新建立索引時,非同步索引器會遭到封鎖,而所有其他非同步索引都會失效,因此在建立索引期間不會取得更新。 因此,如果系統在使用中,用戶可能看不到最新的結果;

  • 重新建立索引需要遍歷整個儲存庫,這會給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標幟來重新建立索引。

Online Reindex - SegmentNodeStore - AEM Instance is Running

對於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負載,從而對運行時效能產生負面影響。

Online Reindex - SegmentNodeStore - AEM Instance is Shut Down

對於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 Console並搜尋CheckpointManager來執行此動作。 然後,按一下使用高值(以秒為單位)的​createCheckpoint(long p1)​操作,即過期時間(例如​2592000)。

  2. crx-quickstart資料夾複製到新電腦

  3. 透過oak-run index命令執行重新索引

  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安裝。

本頁內容

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
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