fess-kopfで既存インデックスの設定から新しいインデックスを作る

fess-kopfのインデックス作成画面にある「copy from index」を、OpenSearch 2.x/3.xで使えるように修正しました。既存インデックスの設定やマッピングを参考にして、別のインデックスを作成するときの改善です。

設定を読み込んでも作成に失敗していた理由

従来はクラスター状態のメタデータをそのまま作成用JSONへ入れていました。このデータには_docなどの型の下にマッピングが入り、OpenSearchが割り当てるprovided_name、uuid、version、creation_dateも含まれます。そのまま作成すると「The mapping definition cannot be nested under a type」や設定項目のエラーになります。

修正後はマッピングを型の外へ取り出し、上記4つの自動割り当て設定を除いて作成用JSONに変換します。通常のマッピングやrefresh_intervalなどの設定は残ります。画面で既存インデックスを閲覧する処理は、引き続き元のメタデータを使います。

利用手順

修正を含むfess-kopfを用意し、インデックス作成画面で新しいインデックス名を入力します。「copy from index」で元のインデックスを選び、読み込まれたJSONのsettingsとmappingsを確認してから作成します。必要に応じてシャード数や更新間隔などを用途に合わせて調整してください。

このPRはコピー時の変換を修正するもので、新しい初期値や有効化設定を追加するものではありません。コピー元の設定が出発点になります。OpenSearch 3.9.0では、変更したrefresh_intervalとマッピングを引き継いで作成できることがPRで検証されています。

コピーされる範囲

ここでコピーするのは設定とマッピングです。元のインデックスの文書をコピーする機能ではなく、作成したインデックスへデータを入れる工程は別に必要です。スナップショット復元やReindexと同じ処理とは扱わないでください。

OpenSearchへ新規インデックスを作成できる接続と権限が必要です。既存のインデックスを置き換える操作ではないため、新しい名前を使い、作成後に設定とマッピングを確認してから利用先を切り替えます。

関連PR

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です