LoginSignup
10
11

More than 3 years have passed since last update.

Fess 構築 (docker)

Last updated at Posted at 2020-04-14

初めての記事になります。
不足・誤り等ありましたらご指摘下さい。

全文検索OSSであるFessを導入しましたので、備忘録です。
とあるWEBシステム内の検索をするために導入しました。

使用するにあたり設定に苦労しましたので、共有も兼ねています。

仮想ホスト環境(参考)

  • vagrant + VirtualBox
  • Centos7
  • HDD 50GB
  • Memory 8GB
  • docker (19.03.5)
  • docker-compose (1.25.2)

環境構築

docker上にFessを構築します。
(検証した際は codelibs/fess:13.5.0 で構築しました)

1.イメージ取得

下記のように、GitHubから公式リポジトリをcloneして下さい。
git clone https://github.com/codelibs/docker-fess.git

2.起動

docker-compose で起動して下さい。
Fess + elasticsearch(2台) + kibana が起動されます。
起動タイミングでは elasticsearchだけが落ちる場合がありますが、restartで解決します。
docker-compose up -d
docker-compose restart

起動後は以下のような構成となります。

[root@localhost compose]# docker ps
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS              PORTS                                        NAMES
f054fc200d28        codelibs/fess:13.5.0                    "/bin/sh -c /usr/sha…"   2 months ago        Up About a minute   9200/tcp, 9300/tcp, 0.0.0.0:8081->8080/tcp   fess01
60b78d5d0f58        docker.elastic.co/kibana/kibana:7.5.1   "/usr/local/bin/dumb…"   2 months ago        Up About a minute   0.0.0.0:5602->5601/tcp                       kibana
577c9e3abe87        codelibs/fess-elasticsearch:7.5.1       "/usr/local/bin/dock…"   2 months ago        Up About a minute   9300/tcp, 0.0.0.0:9202->9200/tcp             es02
17089688b1f1        codelibs/fess-elasticsearch:7.5.1       "/usr/local/bin/dock…"   2 months ago        Up About a minute   9300/tcp, 0.0.0.0:9201->9200/tcp             es01

3.確認 / ログイン

http://localhost:8080 へアクセスして下さい。
検索画面が表示されればOKです。

また、右上のログインから、管理者ログインして下さい。
初期PASSは admin / admin です。

4.クロール設定例

クロール → WEB を開きます。

項目 設定値
名前 web_crawler_test
URL http://xxx.xxx.xxx.xxx/test/
クロール対象とするURL http://xxx.xxx.xxx.xxx/test/.*
クロール対象から除外するURL http://xxx.xxx.xxx.xxx/test_out/.*
.*history.*
最大アクセス数 200000
スレッド数 5
間隔 500
ブースト値 1.0
状態 有効

クロール対象から除外したい場合は、該当パス以下を指定します。
特定の文字が入ったURLだけ除外したい場合は、".* history.*" のように指定しましょう。
対象が非常に多いため、最大アクセス数を20万件にしています。

5.スケジューラ設定

システム → スケジューラ を開きます。

初回およびテスト時は、「いますぐ開始」です。
定期的な実施に関しては、「スケジュール」項目だけ設定注意です。
" 分 / 時 / 日 / 月 / 曜日 " の順で記載します。
例)土曜日の0時に実施したい → 0 0 * * 6

6.結果確認

システム情報 → ジョブログ を開きます。

Screenshot_2020-04-14 Fess ジョブログ.png

スケジューラから実行された結果ログが表示されます。
状態欄にOKと表示されていれば完了です。

6-1.(参考)エラー調査

  • 対象パスへアクセスできない → ホスト側で名前解決できていませんでした…
  • スケジューラが失敗 → elasticsearch が落ちていました…(ちゃんとcurlで確認しましょう)

クラスタの状態は例えば以下のように確認します。

[root@localhost compose]# curl http://localhost:9201/_cluster/health?pretty
{
  "cluster_name" : "fess-es",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 2,
  "active_primary_shards" : 91,
  "active_shards" : 182,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

6-2.(参考)取得データ0件調査

  • クロール対象URLの記載方法が間違っているかも → URLの最後に/(スラッシュ)が抜けていました…

6-3.(参考)文字コード問題

  • クロール対象のexcelが文字化けする
     システム → ページのデザイン → ページファイルの表示 → /searchResults.jsp

Screenshot_2020-04-14 Fess ページのデザイン.png

このファイル内に文字コード変換スクリプトを埋め込みました。
(参考サイト様を失念しましたので、分かり次第追記いたします)

同様に、ファイル名だけ表示したい、リンク短縮したいなどの見栄えも
このファイルを修正すれば変更可能です。

Fessコンテナ内の下記パスに画像ファイルを配置し、
searchResult.jspを変更すればFESSロゴの代わりに、
独自のロゴを設定できたりもします。

root@f054fc200d28:/usr/share/fess/app/images# pwd
/usr/share/fess/app/images
root@f054fc200d28:/usr/share/fess/app/images# ls -l
total 56
drwxr-xr-x. 2 fess fess    26 Dec 21 03:38 admin
-rwxr-xr-x. 1 fess fess   506 Dec 21 02:53 blank.png
-rwxr-xr-x. 1 fess fess 12799 Dec 21 02:53 glyphicons-halflings.png
-rwxr-xr-x. 1 fess fess  8777 Dec 21 02:53 glyphicons-halflings-white.png
-rwxr-xr-x. 1 fess fess  5167 Dec 21 02:53 loading.gif
-rwxr-xr-x. 1 fess fess   907 Dec 21 02:53 logo-head.png
-rwxr-xr-x. 1 fess fess  2360 Dec 21 02:53 logo.png
-rwxr-xr-x. 1 fess fess  1529 Dec 21 02:53 logo-top.png
-rwxr-xr-x. 1 fess fess  1469 Dec 21 02:53 noimage.png

6-4.(参考)default crawler について

週1回のペースでWEBクロールを行っていましたが、想像以上にディスクリソースを消費するうえにクロールが中々終わらない、という事象が起きたため取り込み直したのち default crawler を無効化しました。

下記画像のように、ダッシュボードから DELETE INDEX を選択することで
データが消えますので、再度取り込み直すこともできます。

Screenshot_2020-04-14 Fess システム構成.png

過去資料の検索目的だけでしたので、断面として残しています。
default crawler を定期的に実行する場合は負荷にご注意下さい。

10
11
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
10
11