Elasticsearch 8で初期パスワードを指定する

Elasticsearch 8を何も考えずに起動すると、初回起動時にelasticユーザーのパスワードが自動生成されます。起動する前にパスワードを設定しておきたい場合は、elasticsearch-keystoreコマンドで、bootstrap.passwordを設定しておけばそれが利用されるわけですが、インタラクティブに聞かれても面倒な場合は以下のような感じで渡してあげると設定できます。

$ echo ${es_password} | ./bin/elasticsearch-keystore add "bootstrap.password" -xf

GitHubActionのWindowsでMaven実行

ファイルロックされてファイルが消せないとか、Windowsで発生する問題を検知したいなと思い、GitHub ActionsでLinux&Windowsで実行したくなったので、調べたら、簡単にできた。

たとえば、.github/workflows/maven.ymlを

name: Java CI with Maven

on:
  push:
    branches:
    - main
  pull_request:
    branches:
    - main

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
    steps:
    - uses: actions/checkout@v2
    - name: Set up JDK 11
      uses: actions/setup-java@v2
      with:
        java-version: '11'
        distribution: 'temurin'
    - name: Build with Maven
      run: mvn -B package --file pom.xm

という感じで、作っておいておけば、良い感じだった。

Fess 14へのアップグレード

Elasticsearch 8ももうすぐリリースされるので、それに合わせて、Fess 14もリリースしていく予定で進めています。気持ち的には、今までどおりにElasticsearchのリリースと共にバージョンを上げていこうとは思っていますが、Fess 14では、Elasticsearch 7.x, Elasticsearch 8.x, OpenSearch 1.xが利用できるようになると思うので、Elasticsearchとの結びつきはより弱くなると思います。

Fess 13からのアップグレードをどうするかも考えていく必要がありますが、一番安全な方法は設定ファイルをバックアップして、新環境にリストアして、再クロールする、のが良いと考えています。なので、

1) Fess 13でfess_basic_config.bulkとsystem.propertiesをバックアップする
2) 新環境のFess 14にリストアする
3) クロールを開始して、インデックス作成

みたいな感じがクリーンな感じのアップグレードになると思います。

とはいえ、既存のインデックスに入っているものをどうしても再利用したい、みたいな場合は、管理画面のアップグレードから13系からのアップグレードを実行して、データ移行を行う感じになると思います。なので、

1) バージョンを上げてFess 14を起動する
(たとえば、docker-composeで指定しているバージョンをFess 14に変える)
2) 管理画面のアップグレードで13系からのバージョンアップを実行する
(古いインデックスから設定をコピーされる)
3) 管理画面のダッシュボードで.で始まる不要なインデックスを削除する

みたいな感じになると思います。Fess 14では設定情報を保存しているインデックス名にドットを使わないので、データを移行する必要があるので、上記のような方法でのデータ移行が必要になります。