グローバル検索の関係の一括同期 (IBM Knowledge Catalog)
関係のグローバル検索索引付きデータの使用を開始するには、アップグレード後に一括同期ユーティリティーを実行する必要があります。
5.1.0 以降にアップグレードする場合は、グローバル検索バーを使用して関係を検索し、関係テーブルで項目名でソートできるようにするために、以下のタスクの両方を実行する必要があります。
前提条件
必須ロール
このタスクを実行するには、以下のいずれかのロールが必要です。
- クラスター管理者
- インスタンス管理者
グローバル検索での関係メタデータのクリーンアップ
5.1.0 以降にアップグレードした後、この手順を実行して、関係メタデータをクリーンアップします。
IBMによって推奨される以外のペイロードでは、この手順を実行しないでください。 メタデータがクリーンアップされると、復元する方法はありません。
ローカル環境から、oc login as admin を使用してクラスターにログインします。
後続の呼び出しで使用する Opensearch 資格情報を抽出します。
# extracts Opensearch password ES_PASS=$(oc get secret elasticsearch-master-client-secret -ojson | jq .data.password -r | base64 -d) BASIC_AUTH="Basic $(echo -n "elastic:$ES_PASS" | base64)"検索呼び出しを実行して、以下を確認します。
# get total relationship counts oc exec elasticsearch-master-esnodes-000 -c opensearch -- curl -s -k -X GET \ 'https://localhost:9200/wkc-ALIAS/_search' \ --header "Authorization: $BASIC_AUTH" \ --header 'Accept: */*' \ --header 'Content-Type: application/json' \ --data-raw '{"size":0, "track_total_hits": true, "query":{"term": {"metadata.artifact_type": "relationship"}}}'このコマンドによって返された関係の数をメモします。 この値は、再同期プロセスの完了時に、全体的な再同期プロセスの成功の概算指標として使用できます。 以下の理由により、この数値は正確には同じではないことに注意してください。
- 新しい関係はいつでも作成できます。
- 欠落している関係を同期化しようとすると、この数は増える可能性があります。
- 失効した関係を削除しようとすると、この数は減少する可能性があります。
関係文書を削除します。
# deletes all relationships before resyncing oc exec elasticsearch-master-esnodes-000 -c opensearch -- curl -s -k -X POST \ 'https://localhost:9200/wkc-ALIAS/_delete_by_query' \ --header "Authorization: $BASIC_AUTH" \ --header 'Accept: */*' \ --header 'Content-Type: application/json' \ --data-raw '{"query":{"term": {"metadata.artifact_type": "relationship"}}}'関係の一括同期手順に進みます。
関係の一括同期
アップグレード後にグローバル検索索引の一括同期を実行します。 管理者として、またはコマンド・ラインからクラスターにログインしていることを確認します。
以下のスクリプトをローカル環境に
cpd_gs_sync.shとしてコピーします。#!/bin/bash function prompt_for_namespace(){ read -p "Please provide namespace in which WKC is installed: " NAMESPACE echo "Job will be deployed into \"$NAMESPACE\" namespace" } function all_container_confirmation(){ read -p "ARE YOU SURE YOU WANT TO CONTINUE? THIS WILL AFFECT ALL CONTAINERS, AND MAY TAKE A LONG TIME. TYPE \"YES\" TO PROCEED: " PROCESS_ALL if [[ $PROCESS_ALL != "YES" ]]; then echo "Job run cancelled." exit 0 fi echo "All containers will be processed" } function prompt_for_list_of_catalogs(){ read -p "Please provide the list of containers to synchronize separated by commas, empty list indicates processing all containers(catalog/project/space): " CATALOGS_STRING IFS=', ' read -r -a CATALOGS <<< "$CATALOGS_STRING" if [[ $CATALOGS_STRING == "" ]]; then all_container_confirmation else echo "Following containers will be processed: " for index in "${!CATALOGS[@]}" do echo "$index - ${CATALOGS[index]}" done fi } function construct_db_list_string(){ DB_STRING="[" first=true for index in "${!CATALOGS[@]}" do if [ $first == false ]; then DB_STRING+="," fi first=false DB_STRING+="\"${CATALOGS[index]}\"" done DB_STRING+="]" } function patch_cronjob(){ oc set env -n $NAMESPACE cronjob/catalog-api-relationship-sync-cronjob dbs_to_sync=$DB_STRING } function spawn_job(){ oc delete job -n $NAMESPACE catalog-api-relationship-sync-job oc create job -n $NAMESPACE --from=cronjob/catalog-api-relationship-sync-cronjob catalog-api-relationship-sync-job } function restore_cronjob(){ oc set env -n $NAMESPACE cronjob/catalog-api-relationship-sync-cronjob dbs_to_sync=[] } prompt_for_namespace prompt_for_list_of_catalogs construct_db_list_string patch_cronjob spawn_job restore_cronjob次のコマンドを使用して、ステップ 1 のコードを実行します。
chmod +x ./cpd_gs_sync.sh次のコマンドを使用して、ジョブを実行します。
./cpd_gs_sync.sh端末のプロンプトに従って、ジョブを必要に応じてカスタマイズします。
注: コンテナーのリストが空の場合、すべてのカタログ、プロジェクト、およびワークスペースが再同期されます。以下のコマンドを実行して、ジョブ (catalog-api-relationship-sync-ジョブ) の状況を確認します。
oc get jobs -n ${CPD_INSTANCE_PROJECT} -w | grep relationshipsジョブが完了すると、状況は次のように表示されます。
catalog-api-relationship-sync-job 1/1 3m52s 20mジョブ 状況が完了したら、以下のパッチ・コマンドを実行してグローバル検索関係を使用できるようにします。
oc patch ccs ccs-cr -n ${CPD_INSTANCE_PROJECT} --type=merge --patch='{"spec": {"portal_catalog_is_global_search_relationships_enabled": "true"}}'portal-catalogポッドが再始動されたことを確認するには、以下のようにします。ポッド名を取得します。
oc get pods -n ${CPD_INSTANCE_PROJECT} -w | grep portal-catalogポッドを削除します。
<pod-name>は、ステップ a のポッドの名前に置き換えてください。oc delete pod <pod-name> -n ${CPD_INSTANCE_PROJECT}