2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Elasticsearch7から8に上げた時に変更した設定

Last updated at Posted at 2024-06-28

elasticsearch-rails gemが先月Elasticsearch v8系に対応したv8.0.0をリリースしました。

手元にあったElasticsearch v7系を動かせるRailsアプリケーションでElasticsearch8系を動かそうとしてみたところ、いくつか変更の必要があったのでそちらを紹介します。

Elasticsearch側

いくつか設定の変更・廃止が存在します。

action.destructive_requires_name

インデックスを削除するときに、インデックス名を指定する必要があるかどうかというオプションです。
こちらは7以前からも存在するオプションですが、8系ではデフォルト値がtrueになっています。
自分は開発環境ではデータをリセットする時に、/_allを使って消し飛ばしたかったのでfalseを明示的に指定しています。
逆に本番環境では、必要がなければtrueにしておくのが良いでしょう。

gateway.expected_nodes

クラスター内で予想されるノードの数に関するオプションですが、こちらは8系では廃止されました。
gateway.expected_data_nodesは残っているので、必要ならこちらを利用しましょう。
gateway関係は他にも8系で廃止になっているオプションがあるので、公式ドキュメントと自身の設定を確認するのが良いでしょう。

node.max_local_storage_nodes

1インスタンス内にいくつノードを起動できるかの設定です。
こちらも8系で廃止となってしまいましたが。元々1に設定しており複雑なことはしていなかったのでelasticsearch.ymlから記述を消すのみにしています。

xpack.monitoring

Elasticsearch Monitoring プラグインを使用して監視データを収集および送信するための設定です。
こちらも8系で廃止になったのですが、そもそも利用しておらずxpack.monitoring.enabled = falseのみが記述されていたため、elasticsearch.ymlから記述を消すのみにしています。

discovery.zen.minimum_master_nodes

6系以前ではマスター適格ノード数をユーザー側で指定する必要がありましたが、7系でその必要がなくなり8系で完全に設定が削除されています。素直に設定の記述を消せばOKです。

Rails側

Elasticsearch関連の各Gemをv7からv8にすれば動きます。
例外があるとすれば、elasticsearch-transport gemがelastic-transportとして独立しました。

こちらの変更により、クラス名がElasticsearch::TransportからElastic::Transportに変更されています。
もしElasticsearch::Transportを直接呼び出している場合は変更しておきましょう。

def search
  # 何かしらの検索処理
+ rescue Elastic::Transport::Transport::Errors::BadRequest => e
- rescue Elasticsearch::Transport::Transport::Errors::BadRequest => e
    # 例外処理
  end
end

まとめ

以前Qiitaの検索システムを5系から7系に上げた経験がありますが、ユーザーが頑張る必要のある変更は少なくなった印象です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?