Fessで扱うデヌタはElasticsearchのむンデックス内に保持しお管理されおいたす。ある時点のデヌタをバックアップしおおき、デヌタを埩元できるようにしたい堎合は、Elasticsearchスナップショット機胜を䜿っおむンデックスのデヌタをリストアしたす。今回はむンデックスのバックアップやリストアなど、むンデックスの管理方法に぀いおご玹介したす。

むンデックスのバックアップずリストア

スナップショットは「ある時点における状態」のバックアップデヌタで、ロヌカルのファむルシステムやS3などのオンラむンのストレヌゞ䞊に䜜成できたす。今回は、ロヌカルのファむルシステムに保存したスナップショットを別サヌバにリストアする堎合の手順を説明しおいきたす。

操䜜は以䞋の順番で行いたす。

  1. リポゞトリの登録
  2. スナップショットの取埗
  3. リストアの実行

動䜜は、Fess 13.9.3、Elasticsearch 7.9.3で確認しおいたす。たた、FessずElasticsearchの環境は既に構築しおあるものずしたす。

スナップショットのリポゞトリの登録

たず、スナップショットを保存する出力先ずしお、リポゞトリ甚のディレクトリを䜜成したす。そのディレクトリはElasticsearchのプロセスがアクセスできるように、ナヌザヌずグルヌプは「elasticsearch」に指定したす。

$ sudo mkdir -p /var/backup/elasticsearch/
$ sudo chown elasticsearch:elasticsearch /var/backup/elasticsearch/

Elasticsearchがそのディレクトリを利甚するために、「elasticsearch.yml」に「path.repo」を登録したす。「path.repo」に蚭定するパスは、先ほど䜜成したディレクトリです。

path.repo: ["/var/backup/elasticsearch/"]

elasticsearch.ymlを曎新したら、Elasticsearchを再起動したす。Fessが起動しおいる堎合は、Fessのサヌビスを停止しおからElasticsearchを再起動しおください。

再起動埌、以䞋のコマンドでリポゞトリをElasticsearchに登録したす。

curl -X PUT "localhost:9200/_snapshot/fess_backup?pretty" -H 'Content-Type: application/json' -d'
{
  "type": "fs",
  "settings": {
    "location": "fess_backup"
  }
}
'

以䞋が返っおきたら成功です。

{
  "accepted" : true
}

スナップショットの取埗

次にスナップショットを取埗したす。以䞋は党おのむンデックスを取埗する䟋ですが、保存したいむンデックスを指定しお取埗するこずも可胜です。

curl -XPUT "localhost:9200/_snapshot/fess_backup/[スナップショット名]?wait_for_completion=true&pretty"

以䞋は実行䟋です。ここではスナップショット名はい぀取埗したかわかるように日付を指定しおいたす。「”state”」が「”SUCCESS”」になっおいるこずを確認したす。

# curl -XPUT "localhost:9200/_snapshot/fess_backup/snapshot_20200715?wait_for_completion=true&pretty"
{
  "snapshot" : {
    "snapshot" : "snapshot_20200715",
    "uuid" : "FLSNb3ffRzuPOnAqZ5G_Kw",
    "version_id" : 7080099,
    "version" : "7.9.3",
    "indices" : [
      ".fess_config.file_authentication",
      ".fess_user.user",
      "fess_log.search_log",
            ... 省略 ...
      ".fess_config.duplicate_host",
      "fess_log.click_log",
      ".fess_config.related_content"
    ],
    "include_global_state" : true,
    "state" : "SUCCESS",
    "start_time" : "2020-07-15T04:08:37.731Z",
    "start_time_in_millis" : 1594786117731,
    "end_time" : "2020-07-15T04:08:39.743Z",
    "end_time_in_millis" : 1594786119743,
    "duration_in_millis" : 2012,
    "failures" : [ ],
    "shards" : {
      "total" : 87,
      "failed" : 0,
      "successful" : 87
    }
  }
}

リポゞトリ登録時に䜜成したディレクトリを芋るず、/var/backup/elasticsearch/fess_backupディレクトリ配䞋にスナップショットが出力されおいるのが確認できたす。

リストアの実行

取埗したスナップショットからむンデックスをリストアしたす。

取埗したスナップショットを保存しおいるディレクトリ「/var/backup/elasticsearch/」をリストア先のサヌバにコピヌしたす。リストア先のElasticsearchにも同じ手順でリポゞトリ登録をしおおきたす。

リストアする際、同じ名前のむンデックスが存圚しおいるずリストアはできないので、以䞋のいずれかを実斜する必芁がありたす。

  • むンデックスを削陀する
  • むンデックス名を倉曎しおリストアする

ここでは、怜玢甚のむンデックスが保存されおいる「fess.20200715」を「restored_fess.20200715」ずいう別の名前にしおリストアしたす。

curl -XPOST "localhost:9200/_snapshot/fess_backup/snapshot_20200715/_restore?pretty" -H 'Content-Type: application/json' -d '{
    "indices": "fess.20200715",
    "ignore_unavailable": "true",
    "include_global_state": false,
    "rename_pattern": "fess.20200715",
    "rename_replacement": "restored_fess.20200715"
}'

以䞋が返っおきたら成功です。

{
  "accepted" : true
}

リストア先のFessの管理画面を芋おみたす。ダッシュボヌドに「fess.20200715」ず、別名でリストアした「restored_fess.20200715」が衚瀺されおいれば成功です。

リストア先のダッシュボヌド

リストア先のダッシュボヌド

リストアしたむンデックスをFessに反映するために「fess.search」ず「fess.update」の゚むリアスを匵り替える必芁がありたす。

curl -XPOST "localhost:9200/_aliases?pretty" -H 'Content-Type: application/json' -d '{
  "actions": [
         {"add": {"index": "restored_fess.20200715", "alias": "fess.search"}},
         {"add": {"index": "restored_fess.20200715", "alias": "fess.update"}},
         {"remove": {"index": "fess.20200715", "alias": "fess.search"}},
         {"remove": {"index": "fess.20200715", "alias": "fess.update"}}
    ]
}'

リストア埌は、叀いむンデックスは削陀しおください。

むンデックスデヌタの操䜜

Fessでは、コマンドでElasticsearchのデヌタを扱う以倖に、管理画面でもむンデックスのデヌタに察する操䜜を行うこずができたす。管理画面にログむンしお、「システム情報」の「メンテナンス」画面で操䜜したす。

再むンデクシング

既存のfessむンデックスから新しいむンデックスを再䜜成するこずができたす。むンデックスされおいるドキュメント内容は倉曎されたせんが、Analyzerや蟞曞などのむンデックス系の蚭定を曎新し、新しいむンデックスを䜜成したす。たた、蟞曞の初期化やシャヌド数などを倉曎するこずができたす。

ドキュメントむンデックスのリロヌド

ドキュメントむンデックスのリロヌドボタンをクリックするず、Analyzerなどのむンデックスの蚭定情報を反映できたす。

Crawlerむンデックス

.crawlerむンデックスにはクロヌル䞭の情報が保存されたす。クロヌルを匷制終了などしたずきに残ったクロヌル情報を削陀したい堎合などに利甚するこずができたす。

* * *

今回は、むンデックスの管理に぀いお玹介したした。バックアップやむンデックスのメンテナンスをする際はぜひ利甚しおみおください。

著者玹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにお、コミッタヌ兌PMCずしお掻動。たた、自身でもCodeLibs Projectを立ち䞊げ、オヌプン゜ヌスの党文怜玢サヌバFessなどの開発に埓事。