Skip to main content

Growiで全文検索できないときの対処(ElasticSearchに伴うプラグインアップデート)

概要

サーバのパッケージアップデート後、Growiで全文検索ができない現象が発生しました。

状況確認

  • elasticsearch状況確認
systemctl status elasticsearch.service
  • 状況確認結果
 
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2023-08-09 20:32:57 JST; 12min ago
       Docs: https://www.elastic.co
    Process: 992 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=1/FAI>
   Main PID: 992 (code=exited, status=1/FAILURE)

 8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]:         at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:1>
 8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]:         at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAware>
 8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]:         at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:11>
 8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]:         at org.elasticsearch.cli.Command.main(Command.java:77)
 8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]:         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:125)
 8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]:         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:80)
 8月 09 20:32:56 chisato.lyco.reco systemd-entrypoint[992]: For complete error details, refer to the log at /var/log/elasticsearch/elasticsea>
 8月 09 20:32:57 chisato.lyco.reco systemd[1]: elasticsearch.service: Main process exited, code=exited, status=1/FAILURE
 8月 09 20:32:57 chisato.lyco.reco systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
 8月 09 20:32:57 chisato.lyco.reco systemd[1]: Failed to start Elasticsearch.
lines 1-17/17 (END)

→ ElasticSearchがうまく稼働していない事象を確認。

原因調査

  • ElasticSearchのログ確認
sudo tail -50 /var/log/elasticsearch/elasticsearch.log 
  • ログ抜粋
[2023-08-09T20:32:56,947][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [chisato.lyco.reco] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalArgumentException: Plugin [analysis-icu] was built for Elasticsearch version 7.17.10 but version 7.17.12 is running
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:173) ~[elasticsearch-7.17.12.jar:7.17.12]

と、パッケージ更新時にElasticSearchが上がったのに、その中のプラグインが対応していないためこの事象が発生です。

対処

  1. 入っていたプラグインをアンインストール
  2. 最新バージョンのプラグインを再インストール
  3. プラグイン再インストール後にElasticSearch起動

と、割と単純な作業です。

  • プラグインのアンインストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-icu
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin remove analysis-kuromoji
  • プラグインの再インストール
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
  • ElasticSearch起動
sudo systemctl restart elasticsearch.service

環境によってはサービス起動まで時間が掛かります

  • ElasticSearch起動確認
systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
     Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-08-09 20:53:39 JST; 27s ago
       Docs: https://www.elastic.co
   Main PID: 2930 (java)
      Tasks: 93 (limit: 9152)
     Memory: 786.6M
     CGroup: /system.slice/elasticsearch.service
             ├─2930 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.tt>
             └─3114 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

 8月 09 20:53:14 chisato.lyco.reco systemd[1]: Starting Elasticsearch...
 8月 09 20:53:39 chisato.lyco.reco systemd[1]: Started Elasticsearch.

起動を確認。

Growiで事象の解消確認

  1. Growiアプリにブラウザでアクセスします。
  2. 管理者権限でログインします。
  3. 設定>Elasticsearch管理を進み、以下のように接続されていればOKです。