公式のドキュメントのインストール手順がわかりづらい上に誤りと思われる部分があるので、それを改善した手順をまとめました。
環境
- Windows 10
- JDK 11
- Fess 13.4.3
- Elasticsearch 7.4.2
- plugin 7.4.0
FessとElasticsearchのバージョンの対応は公式ドキュメントで示されている「安定版」と必ず同一にします。
上記は2019/12/10時点で最新版の環境ですが、1つ前のFess 13.3.2 / Elasticsearch 7.3.2 / plugin 7.3.0
でも同様の手順で導入ができることを確認しています。
Fessの導入
ダウンロード
GitHubでFessをダウンロードして、任意のディレクトリに解凍します。
https://github.com/codelibs/fess/releases/tag/fess-13.4.3
Elasticクラスタ接続設定
bin
ディレクトリに格納されているfess.in.bat
を編集します。
適当なテキストエディタで開くと、121~123行目に以下のような記述があります。
REM External elasticsearch cluster
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.http_address=http://localhost:9200
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.dictionary.path=%ES_HOME%/config/
122行目のREM
(コメントアウト)を外して保存します。
REM External elasticsearch cluster
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.http_address=http://localhost:9200
REM set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.dictionary.path=%ES_HOME%/config/
この時、**123行目もコメントアウトを外してしまうと動作しなくなります。**最早消しておいてもいいと思います。また、公式ドキュメント通りに、例えば以下のように設定を書き換えても、同様に動作しなくなります。
REM External elasticsearch cluster
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.es.http_address=http://localhost:9200
set FESS_JAVA_OPTS=%FESS_JAVA_OPTS% -Dfess.dictionary.path="c:/elasticsearch-7.4.2/config/"
Fess側の設定は以上です。
Elasticsearchの導入
ダウンロード
公式サイトでElasticsearchをダウンロードします。WINDOWS
をクリックすればダウンロードが始まります。今回は解凍先をCドライブ直下とします。
https://www.elastic.co/jp/downloads/past-releases/elasticsearch-7-4-2
プラグインのインストール
コマンドプロンプトで以下のコマンドを1行ずつ入力していきます。minhash以外のすべてのプラグインでインストールの許可を求められます。まとめて実行しようとすると拒否した扱いになり、インストールが完了しません。
c:/elasticsearch-7.4.2/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:7.4.0
c:/elasticsearch-7.4.2/bin/elasticsearch-plugin install org.codelibs:elasticsearch-analysis-extension:7.4.0
c:/elasticsearch-7.4.2/bin/elasticsearch-plugin install org.codelibs:elasticsearch-configsync:7.4.0
c:/elasticsearch-7.4.2/bin/elasticsearch-plugin install org.codelibs:elasticsearch-dataformat:7.4.0
c:/elasticsearch-7.4.2/bin/elasticsearch-plugin install org.codelibs:elasticsearch-minhash:7.4.0
コマンドを実行すると次のような出力があります。
-> Downloading org.codelibs:elasticsearch-analysis-fess:7.4.0 from maven central
[=================================================] 100%??
Warning: sha512 not found, falling back to sha1. This behavior is deprecated and will be removed in a future release. Please update the plugin to use a sha512 checksum.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.lang.RuntimePermission accessDeclaredMembers
* java.lang.RuntimePermission getClassLoader
* java.lang.reflect.ReflectPermission suppressAccessChecks
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.
Continue with installation? [y/N]
Continue with installation?
と問われるのでy
を入力してエンターを押せばインストールが完了します。
設定の追加
config
ディレクトリ内のelasticsearch.yml
を編集します。
テキストエディタで開き、次のテキストを追加します。#
はコメントアウトなので気を付けます。最下行に追加すると良いと思います。
configsync.config_path: c:/elasticsearch-7.4.2/config/
Elasticsearchの設定は以上です。
起動・確認
起動は必ずElasticsearch → Fessの順で行います。
Elasticsearch
C:/elasticsearch-7.4.2/bin
にあるelasticsearch.bat
をダブルクリックして起動します。ターミナルが表示され、起動処理が始まります。しばらくして次のようなログが出力されていればElasticsearchの起動は成功です。
[2019-12-10T12:00:00,000][INFO ][o.e.n.Node ] [hoge] started
[2019-12-10T12:00:00,000][INFO ][o.e.c.r.a.AllocationService] [hoge] Cluster health status changed from [RED] to [GREEN] (reason: [shards started [[.configsync][0]] ...]).
[2019-12-10T12:00:00,000][INFO ][o.c.e.c.s.ConfigSyncService] [hoge] ConfigFileUpdater is started at 1m intervals.
ブラウザでも確認してみましょう。localhost:9200
にアクセスします。すると、次のようなjson形式の結果が表示されます。
{
"name" : "hoge",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "hogehoge",
"version" : {
"number" : "7.3.2",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "hogehoge",
"build_date" : "2019-12-10T12:00:00.000000Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
プラグインの導入状況も確認してみましょう。http://localhost:9200/_cat/plugins?v&s=component&h=name,component,version,description&pretty
にアクセスすると、次のようなjson形式の結果が表示されます。
name component version description
hoge analysis-extension 7.4.0 This plugin provides an analysis library.
hoge analysis-fess 7.4.0 FessAnalysis Plugin for Elasticsearch
hoge configsync 7.4.0 ConfigSync plugin syncs up with configuration files in .configsync index.
hoge dataformat 7.4.0 This plugin provides several response formats.
hoge minhash 7.4.0 This plugin provides b-bit minhash algorism.
Fess
bin
ディレクトリのfess.bat
をダブルクリックして起動します。ターミナルが表示されます。初回起動時は、起動してしばらくするとElasticsearchが動きだすので少し待ちます。
localhost:8080
にアクセスして、ページが表示されれば成功です。
おわりに
公式ドキュメントでは「5 分で簡単に構築可能な全文検索サーバー」と謳っていますが、それはあくまでElasticsearch組み込み版での話のようです。外部Elasticsearchを導入しようとしたところ、5分どころか無限に時間を食わんばかりの苦労を強いられました。
これからFess + 外部Elasticsearchを利用しようとしている人がこの記事にたどり着いて、文字通り「5分で簡単に構築」できてくれたら幸いです。