ラベル Fess の投稿を表示しています。 すべての投稿を表示
ラベル Fess の投稿を表示しています。 すべての投稿を表示

Fess:クローラー設定の細分化とラベル設定

公開:2026.04.17 15:58

Fess:クローラー設定の細分化とラベル設定

Fessのクローラー設定を行う際、インデックス対象のルートフォルダを登録するより、サブフォルダ別にクローラー登録した方が良い気がする。
これはクロールに相当時間がかかるため、例えばフォルダを年別(2024年、2025年、2026年)のサブフォルダに分けておけば2024年、2025年フォルダは頻繁にクロールする必要はないわけで負荷が少なくなる。

また、ラベルを付けておくと、検索結果をラベル名で絞り込めるので便利。

ラベルの設定

ラベルは設定画面の [クローラー] - [ラベル] にて設定する。
新規設定画面より、
・名前 - 画面に表示する名前
・値 - 内部の値、英数字で指定
・クロール対象とするパス - 正規表現でパスを指定

過去記事:Fess:WSL+Ubuntu+Docker環境でのインデックス作成 では、Windows上の"d:\documents"フォルダを/var/fes/documents にマップした。
このフォルダ配下のサブフォルダ名でラベルを付ける場合で、"D\documents\2025\*.*" のフォルダに対してのラベルの場合は以下のパスを指定

file:/var/fess/documents/2025/.*

のように指定すれば 2025フォルダ配下の全ファイルに指定したラベルが付く。

ラベルを設定したら設定画面の [システム] - [スケジューラー] より "Label Updater" を実行する。


Fess

Fess:WSL+Ubuntu+Docker環境でのインデックス作成

公開:2026.04.14 14:23

WSL+Ubuntu+Docker環境でのインデックス作成

WSL Docker上に構築したFessからWSLホストのWindows上に配置したドキュメントファイルのインデックスを作成したい。

なぜかいつも苦労する。
smb://・・で指定してもうまく行かないケースが多く、よくわからず色々やっていたらうまくいく。(で、結局何が原因かわからない)
Windows上のドライブはWSL側に自動的にマウントされ Ubuntuからは /mnt/x/・・でアクセス可能である。
なので、このパスをDockerから参照する方向とする。


環境

ホスト:Windows 11 Pro 25H2 (26200.8037)

このWindows上にD:¥documentsフォルダを作成、ここにインデックス化したいドキュメント一式を配置する。

WSL+Ubuntu+Docker

WSL上にUbuntuをインストールし、Ubuntu上にDocker Engine環境を作成。
UbuntuからWindows上のインデックスフォルダは /mnt/d/documents/ で参照可能である。

Fess
Docker上にFess環境を構築。

手順

1. composer.yaml修正

Ubuntuの/mnt/d/documentsをコンテナから/var/fess/documents/ でアクセスできるよう、composeer.yamlに以下volumnes:記述を追加。

:
services:
fess:
image: codelibs/fess:latest
ports:
- "8080:8080"
volumes:
- /mnt/d/documents:/var/fess/documents

2. コンテナ再作成

すでにFessコンテナ作成済みであれば再作成が必要なので "docker compose down"したのちに "docker compose up"で作成する。

docke compose -f composer -f compose.yaml -f composer-opensarch3.yaml down
docke compose -f composer -f compose.yaml -f composer-opensarch3.yaml up -d

実行結果:

root@xxx:~/fess-docker# docker compose -f compose.yaml -f compose-opensearch3.yaml down
[+] down 3/3
 ✔ Container fess01               Removed                                                                                                              10.5s
 ✔ Container search01             Removed                                                                                                               0.6s
 ✔ Network fess-docker_search_net Removed                                                                                                               0.6s
root@xxx:~/fess-docker# docker compose -f compose.yaml -f compose-opensearch3.yaml up -d
[+] up 3/3
 ✔ Network fess-docker_search_net Created                                                                                                               0.0s
 ✔ Container search01             Healthy                                                                                                              15.7s
 ✔ Container fess01               Started                                                                                                              15.8s
    

3. アクセス確認

コンテナからWindows上のファイルが参照できるか確認する。

docker exec -it fess01 /bin/bash
ls /var/fess/documents

実行結果:

root@xxx:~/fess-docker# docker exec -it fess01 /bin/bash
26423820c2de:/usr/share/fess# ls /var/fess/documents
TEST.txt
    
アクセスできることが確認できた。

4. クローラー設定

[設定] - [クローラー] - [ファイルシステム] より、パス欄に「file:/var/fess/documents/」と入力すればOK


Fess

Fess:Dockerコンテナを削除する方法

公開:2026.04.14 10:17

FessのDockerコンテナを削除する方法

Fess環境をいったん全削除して作り直したいのでFessのDockerコンテナを削除したい。

Fessのcompose.yaml、compose-opensearch3.yamlを格納したフォルダ(手順書通りにやっていれば ~/fess-docker/)をカレントディレクトリに移動した後、以下コマンドを実行する。

docker compose -f compose.yaml -f compose-opensearch3.yaml down -v

-fでCompose設定ファイルの場所を指定、-vでボリュームを削除

実行結果:

root@xxx:~/fess-docker# docker compose -f compose.yaml -f compose-opensearch3.yaml down -v
[+] down 5/5
 ✔ Container fess01                       Removed                                                                                                      10.6s
 ✔ Container search01                     Removed                                                                                                       0.9s
 ✔ Volume fess-docker_search01_dictionary Removed                                                                                                       0.0s
 ✔ Network fess-docker_search_net         Removed                                                                                                       0.3s
 ✔ Volume fess-docker_search01_data       Removed                                                                                                       0.6s
  


Fess Docker

Fess:ヒットした文書のダウンロードができない


Fess:ヒットした文書のダウンロードができない

Fessでヒットした文書のダウンロードができなくなった。
さっきまでダウンロードできてたんだが・・

やったことといえば、Dockerにブログ(ghost)を入れた。
結局動かなくてイメージは削除してある。
これが影響することってあるんだろうか?

"sudo docker network ls" で見たところ、"ghost-blog_default"と名の付くbridgeのネットワークを見つけた。
xxxxx@yyyyy:~$ sudo docker network ls
NETWORK ID     NAME                 DRIVER    SCOPE
7f47a6da2594   bridge               bridge    local
bb0d8a5c1713   ghost-blog_default   bridge    local
9ddbba58056f   host                 host      local
3345ef38cc7e   xxxxx_search_net     bridge    local
4c2194c169f7   none                 null      local
  
これが原因?とりあえず削除してみる。
sudo docker network rm ghost-blog_default

これで復旧した。
Dockerって他のコンテナに影響しないと思っていたが、ネットワークは注意したほうが良い。


2025.07.30 (水) 07:43
Fess

Fess:Fessのバージョンを確認するには?


Fessのバージョンを確認するには?

稼働中のFessのバージョンを調べようとしたが、管理者画面にバージョン情報が見当たらない。

Docker上に構築しているので、手っ取り早くコンテナのバージョンを調べたほうが早い。
xxxxx@yyyyy:~$ sudo docker ps
[sudo] password for xxxxx:
CONTAINER ID   IMAGE                                     COMMAND                  CREATED        STATUS          PORTS                                                                     NAMES
e3c701bef054   ghcr.io/codelibs/fess:14.18.0             "/usr/share/fess/run…"   7 months ago   Up 13 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                                 fess01
3d10058869a9   ghcr.io/codelibs/fess-opensearch:2.17.0   "./opensearch-docker…"   7 months ago   Up 13 minutes   9300/tcp, 9600/tcp, 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9650/tcp   search01
  


Fess

WSL #27:Fessを外部からアクセスできるようにする


環境

■ WSLバージョン:
WSL バージョン: 2.3.24.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.22631.4317

■ Ubuntuバージョン:
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble

■ Fessバージョン:
fess.version = 14.17.0

WSL上のFessを外部からアクセスできるようにする

過去記事「#13:Docker EngineにFessをインストールしてみる」 にて、WSL2 - Ubuntu - DockerEngine上にFessを構築した。

この状態では、ローカルPC以外からFessへアクセスできないため、ポートフォワードの設定を行い、外部からFessへアクセスできるようにする。

UbuntuのIPアドレス確認

UbuntuのIPアドレスを確認する。
ip address show | grep eth0

実行例:
user@pc:~$ ip address show | grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 172.25.4.229/20 brd 172.25.15.255 scope global eth0    
  
⇒ 172.25.4.229 である。

ポートフォワード設定

Windowsのコマンドプロンプト(管理者)にてポートフォワード設定を行う。
設定としては、
・ホスト(Windows)の8080ポートで受信したデータを
・ゲスト(Ubuntu IP:172.25.4.229)の8080ポートへ転送する
ということになる。

コマンドで表すと・・・
netsh interface portproxy add v4tov4 listenaddress=* listenport=8080 connectaddress=172.25.4.229 connectport=8080

ファイアウォール設定

Windowsの既定でポート8080はブロックされていると思うので [コントロールパネル] - [システムとセキュリティ] - [Windows Defender ファイアウォール] - [詳細設定] - [受信の規則]
で、ポート8080を許可しておく。

これで外部から "http://(ホストIP):8080" でアクセス可能となる。


WSL, Fess

Fess:WSL+Ubuntu+Docker上にFessをインストールしてみる

更新:2026.04.13 08:07
公開:2024.07.05 10:15

WSL+Ubuntu+Docker上にFessをインストールしてみる

WSL2上のUbuntuにDockerEngineを構築しFessのインストールを行ってみる。

環境

Windows 11 25H2 (26200.8037)

WSLバージョン
PS C:\Users\xxx> wsl --version
WSL バージョン: 2.3.24.0
カーネル バージョン: 5.15.153.1-2
WSLg バージョン: 1.0.65
MSRDC バージョン: 1.2.5620
Direct3D バージョン: 1.611.1-81528511
DXCore バージョン: 10.0.26100.1-240331-1435.ge-release
Windows バージョン: 10.0.26200.8037

Ubuntuバージョン
xxx@xxx:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble

手順

WSL+Ubuntuインストール

WSLおよびUbuntuのインストールを行う。
#9:WSL2のインストール手順(2021年11月現在)

Docker Engineインストール

UbuntuにDockerEngineをインストールする。
#12:Docker Engineをインストールしてみる

Fessインストール

DockerEngine上にFessをインストールする。
公式のインストール手順はこちら ⇒ https://fess.codelibs.org/ja/setup.html

1. 設定ファイルのダウンロード

mkdir fess-docker && cd fess-docker
curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml
curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch3.yaml

実行結果:
root@xxx:~# mkdir fess-docker && cd fess-docker
root@xxx:~/fess-docker# curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   867  100   867    0     0   3470      0 --:--:-- --:--:-- --:--:--  3468
root@xxx:~/fess-docker# curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch3.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1258  100  1258    0     0   5601      0 --:--:-- --:--:-- --:--:--  5616
root@xxx:~/fess-docker# ls
compose-opensearch3.yaml  compose.yaml
      

2. コンテナの起動

docker compose -f compose.yaml -f compose-opensearch3.yaml up -d

実行結果:
root@xxx:~/fess-docker# docker compose -f compose.yaml -f compose-opensearch3.yaml up -d
[+] up 24/24
 ✔ Image ghcr.io/codelibs/fess-opensearch:3.5.0 Pulled                                                156.0s
 ✔ Image ghcr.io/codelibs/fess:15.5.1           Pulled                                                 95.0s
 ✔ Network fess-docker_search_net               Created                                                 0.0s
 ✔ Volume fess-docker_search01_data             Created                                                 0.0s
 ✔ Volume fess-docker_search01_dictionary       Created                                                 0.0s
 ✔ Container search01                           Healthy                                                11.2s
 ✔ Container fess01                             Started                                                11.1s
      

3. Fessの起動

Windowsにてブラウザを起動し "localhost:8080" へアクセスすればOK。
右上のloginで管理者画面にログイン
初期ユーザー・パスワードはともに "admin"
以上


WSL, Fess

Docker:コンテナからローカルネットワークにアクセスできない?


コンテナからローカルネットワークにアクセスできない?

Docker版Fessを構築したが、なぜかネットワーク共有のインデックスが作成できない。
そもそもDockerコンテナからネットワークってアクセスできるの?

Ubuntu環境を作って検証

1. Ubuntuコンテナを作成

2. pingを実行
bash: ping: command not found
Docker:Ubuntuコンテナでpingが使えるようにする

あらためてpingを実行
ping www.yahoo.co.jp
→ 正常
apt-getコマンドが使えるのでインターネットにはアクセスできるよね

ローカルネットワークにはつながる?
ping 172.xxx.xxx.xxx
→ つながらない

3. コンテナのIPアドレスって?
ifconfig
→ eth0 のIPは「172.17.0.2」

4.

Fess #14:ファイル共有のインデックスが作成できない(Docker版)

バージョン

Fess 14.14 (Docker版)

ファイル共有のインデックスが作成できない(Docker版)

Windows(Dockerのホスト)上に共有フォルダ(\\192.168.1.1\doc)を作成、
ここにドキュメント類を置いてインデックスを作成したいのだが…
うまくいかない。

旧システム(Docker版ではないやつ)は "file:////192.168.1.1/doc" でうまくいってた。

クローラー:ファイルシステム:パスの設定をいろいろ変えて試してみる

1. "file://///192.168.1.1/doc"
→ ダメ

2. クローラー:ファイル認証 で認証情報を追加してみる
ホスト名:192.168.1.1
スキーム:Samba
ユーザー名:(ユーザー名)
パスワード:(パスワード)
ファイルクロール設定:(クローラーで設定した名前)
→ ダメ

3. "file:////192.168.1.1/doc"
※ file: の後ろにスラッシュを4つ
→ ダメ

4. "smb://192.168.1.1/doc"
→ ダメ

5. "smb://192.168.1.1/doc/"
→ ダメ

6. ファイル認証情報のユーザー名にコンピュータ名(IP)を付けてみる
※ 192.168.1.1\username みたいに
→ ダメ

7. "file://192.168.1.1/doc/"
8. "file://///192.168.1.1/doc/"
9. "file:////192.168.1.1/doc/"
→ ダメ

Fess #13:インデックスが作成されない(Docker版)


バージョン

Fess 14.14
・・・のはずだが、バージョン情報ってどこで見るんだ?

インデックスが作成されない(Docker版)

前回(Docker版インストール)でFessを構築したが、インデックスが作成できない。

インデックス作成対象のフォルダは D:\documents としている。
[クローラー] - [ファイルシステム] にて、パス "file:d:/documents" で登録し、Default Crawler のジョブを動かしたがインデックスが作成される気配がない。
クローラーのパス指定を "file:/d:/documents" へ変更したがダメ。

で、ふと思ったけど、FessはWSL2上のDockerで動いてる。
Dockerからホストのドライブって見れないよね・・・

services:
  fess01:
    :(省略)
    restart: unless-stopped
    volumes:
      - /D/documents:/home/documents
      :(省略)
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d --build

Fess #12:Docker Desktop版をインストールしてみる

公開:2024.06.13 15:42

FessのDocker版をインストールしてみる

マシン老朽化のため、現在使用中のFessマシンを破棄することになった。
ということで、新マシンにFessを構築しようとしたが、Docker版がデフォルトのようだ。

https://fess.codelibs.org/ja/quick-start.html

Docker版インストール手順:
https://fess.codelibs.org/ja/setup.html

ということで、Windows 11にDocker版のFessを構築してみる。

環境

Windows 11 Pro 23H2 (22631.3737)

インストール方法

公式の手順を元に作業を進める。

1. Docker Desktopのインストール
mkdir fess-docker && cd fess-docker curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch3.yaml

実行結果:
root@xxx:~# mkdir fess-docker && cd fess-docker
root@xxx:~/fess-docker# curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   867  100   867    0     0   3470      0 --:--:-- --:--:-- --:--:--  3468
root@xxx:~/fess-docker# curl -OL https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch3.yaml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1258  100  1258    0     0   5601      0 --:--:-- --:--:-- --:--:--  5616
      
compose.yamlとcompose-opensearch3.yamlがダウンロードされているはずなので確認。
実行結果:
root@xxx:~/fess-docker# ls
compose-opensearch3.yaml  compose.yaml
      

2. vm.max_map_countの設定
set_vm_max_map_count_to_at_least_262144
通常は WSL 2版のDocker Desktopのはずなので、そのあたりの手順をやっておく。
コマンドプロンプトで、
wsl -d docker-desktop -u root
vi /etc/sysctl.conf
とし、以下の行を追加する。(viで行追加するには "o")
vm.max_map_count = 262144

設定がうまくいったか確認するには?
sysctl vm.max_map_count
と打てばよい。
vm.max_map_countとは?

3. 起動ファイルの作成
手順書の通りに "curl" コマンドを入力。
自分の場合は D:\app\fess フォルダを作成、カレントディレクトリをfessフォルダに移動してから実行した。(別にどこでも良いが)
curl -o compose.yaml https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose.yaml
curl -o compose-opensearch2.yaml https://raw.githubusercontent.com/codelibs/docker-fess/master/compose/compose-opensearch2.yaml
4. Fessの起動
以下コマンドで勝手にダウンロードが始まって起動まで終わる。
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d
-f で起動ファイルを指定し、 up でコンテナ起動
-d はバックグラウンドで実行(デタッチモード)

管理者のアカウントは?
→ admin / admin でログインできる。


Fess #12:インデックスが作成されない


環境

Fess 13.12.2
Elasticsearch 7.12.1

現象

Fessで検索しようとしたら何もヒットしないことに気づいた。
手動でクローラーの実行をしても2分くらいで処理が終わりインデックスが作成されない。
(通常であれば1日くらいかかる)
何もヒットしないのでインデックスはすべて消えてしまったと思われる。

インデックス有効期限の設定漏れか?
※過去記事:Fess:作成したインデックスが消えてしまう
と思ったが設定は行っていた。

調査

Fessにログインし [システム情報] - [ログファイル] を選択、
直近の fess-crawler_yyyymmdd_x.log.gz をクリック、
するとログファイル(圧縮ファイル)がダウンロード出来るので7-Zip等で解凍し確認。

何やらエラーが発生している。
2022-02-01 17:10:26,095 [WebFsCrawler] WARN  Failed to add url: file:////xxxxx/xxxxx/
org.codelibs.fess.crawler.exception.EsAccessException: Failed to insert 20220201170937-1.xxxxxxxxxxxxxxxxxxxxxxxxxxx

Elasticsearchのログも確認。
C:\elasticsearch-7.12.1\logs\elasticsearch.log
[2022-02-14T00:00:44,716][WARN ][o.e.c.r.a.DiskThresholdMonitor] [xxxxxx] high disk watermark [90%] exceeded on [AjlM1ctISSqUyHWi6TFN4A][xxxxxx][C:\elasticsearch-7.12.1\data\nodes\0] free: 36.2gb[7.8%], shards will be relocated away from this node; currently relocating away shards totalling [0] bytes; the node is expected to continue to exceed the high disk watermark when these relocations are complete

FessとElasticsearchで見ているログの日付が違うが、そこはとりあえず良しとして
Elasticsearchの警告が気になる。
ディスク空き不足なのか?

Fess #11:サービス起動

FessをBAT起動でなくサービス起動させるには?


手順

コマンドプロンプト(管理者)で "c:\fess\bin" フォルダを開き、
service.bat install
を実行する。
その後コンパネのサービスを開き、Fessのサービスを起動
サービスの削除は
service.bat remove


Fess

Fess #10:Elasticsearch サービス起動

ElasticsearchをBAT起動でなくサービス起動させるには?


手順

コマンドプロンプト(管理者)で "c:\elasticsearch\bin" フォルダを開き、
elasticsearch-service.bat install
を実行する。
その後コンパネのサービスを開き、Elasticsearchのサービスを起動

サービスの削除は
elasticsearch-service.bat remove


Elasticsearch

Fess #9:Elasticsearchインストール (Windows 10)

Fess単体でも動作するが、これは"開発モード"らしく、本番系ではElasticsearchのインストールが必要、とのことらしい。
ということで Elasticsearchのインストールを行う。

※ 前回記事:#6 URLで検索対象を分けたい
記事一覧


バージョン

Windows 10 20H2 19042.985
Fess 13.12.2 (C:\fess-113.12.2 にインストール)
OpenJDK 16.0.1 (C:\jdk-16.0.1 にインストール)
Elasticsearch 7.12.1 (C:\elasticsearch-7.12.1 にインストール)

手順

Fessのドキュメント https://fess.codelibs.org/ja/13.12/install/install.html を参考にインストールを行う。
※ 上記ドキュメントの "ZIPパッケージを利用する場合 (Windows)" を参照

1. JDKとFessのインストール

全文検索 Fess + Windows 10 #1:インストール を参考にインストールしておく。

2. ダウンロード

https://www.elastic.co/jp/ - 画面上部の[製品] - [Elascitsearch] - [ダウンロードして使いはじめる] - [(1) Get Elasticsearch] - [Windows] をクリック

3. 展開

ダウンロードした elasticsearch-7.12.1-windows-x86_64.zip を解凍し、解凍後の elasticsearch-7.12.1 フォルダを C:\ へ移動

4. Elasticsearchプラグインインストール

システム環境変数に ES_JAVA_HOME を追加、Javaのパス(C:\jdk-16.0.1) を指定する。

コマンドプロンプトを起動し以下コマンドを入力する
cd /d c:\elasticsearch-7.12.1\bin
elasticsearch-plugin install org.codelibs:elasticsearch-analysis-fess:7.12.0
elasticsearch-plugin install org.codelibs:elasticsearch-analysis-extension:7.12.0
elasticsearch-plugin install org.codelibs:elasticsearch-minhash:7.12.0
・コマンドを入力すると "Continue with installation? [y/N]" と聞いてくる場合があるので "y" を入力し先に進む
・コマンド末尾の数字"7.12.0"はElasticsearchのバージョンと思われるが "7.12.1" へ変更したところエラーでインストールできなかった。
とりあえず 7.12.0 のまま作業を進める。
・インターネット接続が必要。接続されていないとエラーとなる。
・ちょうどのタイミングで Elasticsearch 7.13.0 がリリースされた。しかし7.13.0のプラグインは存在しなかった(エラーとなった)ため、Elasticsearch 7.12.1 で作業を進める。

5. コンフィグ設定

c:\elasticsearch-7.12.1\config\elasticsearch.yml ファイルをエディタで開き、末尾に以下行を追加
configsync.config_path: c:/elasticsearch-7.12.1/config/
・Fessのドキュメントでは "configsync.config_path: [absolute path of $ES_HOME]/data/config/" と記載があるが Elasticsearchのフォルダ内に /data/config/フォルダ は存在しない。

6. configsync展開

https://repo.maven.apache.org/maven2/org/codelibs/elasticsearch-configsync/7.12.0/elasticsearch-configsync-7.12.0.zip をダウンロードし解凍
C:\elasticsearch-7.12.1\modules\configsyncフォルダを作成し、解凍後の4つのファイルを作成したフォルダへ移動

C:\elasticsearch-7.12.1\config\elasticsearch.ymlをエディタで開き、末尾に以下内容を貼り付け保存
configsync.config_path: c:/elasticsearch-7.12.1/config/

7. Fess起動オプション設定

C:\fess-13.12.2\bin\fess.in.bat をエディタで開き、最後の方にある以下行先頭の "REM" を取り除く
2行目については値が誤っている?ので変更する。
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/
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.12.1/config/

8. メモリ使用量の調整

自動調整が推薦されているが、Elasticsearchのメモリ使用量を少なくしたい場合は C:\elasticsearch-7.12.1\config\jvm.options ファイルを編集する
例えば最大ピープサイズを1GBにするには、以下の記述を追加する
- Xms2g
- Xmx2g

9. 起動

C:\elasticsearch-7.12.1\bin\elasticsearch.bat を起動
C:\fess-13.12.2\bin\fess.bat を起動


全文検索, Fess, Elasticsearch

Fess #8:Elasticsearch サービス起動しなくなった

Elasticsearchのサービスが起動しなくなってしまった。

※ 記事一覧


環境

Ubuntu 20.04.1 LTS
Elasticsearch 7.9.1
OpenJDK 11.0.8

現象

Elasticsearchのサービスを起動してみるがエラーで起動できない。
user@user-pc:~$ sudo systemctl start elasticsearch.service
Job for elasticsearch.service failed because the control process exited with error code.
See "systemctl status elasticsearch.service" and "journalctl -xe" for details.
おそらく "apt upgrade -y" でシステム全更新したのが原因と思われる。

"systemctl status elasticsearch.service" でステータスを確認してみる。
user@user-pc:~$ systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
    Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
    Active: failed (Result: exit-code) since Fri 2020-09-04 16:39:00 JST; 2min 11s ago
      Docs: https://www.elastic.co
    Process: 13533 ExecStart=/usr/share/elasticsearch/bin/systemd-entrypoint -p ${PID_DIR}/elasticsearch.pid --quiet (code=exited, status=1>
  Main PID: 13533 (code=exited, status=1/FAILURE)

9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareComman>
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.cli.Command.main(Command.java:90)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
9月 04 16:38:59 user-pc systemd-entrypoint[13533]:         at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
9月 04 16:39:00 user-pc systemd[1]: elasticsearch.service: Main process exited, code=exited, status=1/FAILURE
9月 04 16:39:00 user-pc systemd[1]: elasticsearch.service: Failed with result 'exit-code'.
9月 04 16:39:00 user-pc systemd[1]: Failed to start Elasticsearch.
Elasticsearchのログ(/var/log/elasticsearch/elasticsearch.log)を見てみる。
(suでスーパーユーザーにしておなかいと見れなかった)
[2020-09-04T16:38:59,553][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [user-pc] fatal error in thread [main], exiting
java.lang.NoSuchMethodError: org.elasticsearch.index.mapper.MappedFieldType: method 'void ()' not found
        at org.codelibs.elasticsearch.minhash.index.mapper.MinHashFieldMapper$MinHashFieldType.(MinHashFieldMapper.java:144) ~[?:?]
        at org.codelibs.elasticsearch.minhash.index.mapper.MinHashFieldMapper$Defaults.(MinHashFieldMapper.java:62) ~[?:?]
        at org.codelibs.elasticsearch.minhash.index.mapper.MinHashFieldMapper$Builder.(MinHashFieldMapper.java:79) ~[?:?]
        at org.codelibs.elasticsearch.minhash.index.mapper.MinHashFieldMapper$TypeParser.parse(MinHashFieldMapper.java:107) ~[?:?]
        at org.elasticsearch.index.mapper.ObjectMapper$TypeParser.parseProperties(ObjectMapper.java:319) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.ObjectMapper$TypeParser.parseObjectOrDocumentTypeProperties(ObjectMapper.java:237) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.RootObjectMapper$TypeParser.parse(RootObjectMapper.java:141) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:108) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.DocumentMapperParser.parse(DocumentMapperParser.java:88) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:421) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.MapperService.internalMerge(MapperService.java:377) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.index.mapper.MapperService.merge(MapperService.java:355) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.checkMappingsCompatibility(MetadataIndexUpgradeService.java:188) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.cluster.metadata.MetadataIndexUpgradeService.upgradeIndexMetadata(MetadataIndexUpgradeService.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadata(GatewayMetaState.java:247) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.gateway.GatewayMetaState.upgradeMetadataForNode(GatewayMetaState.java:230) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.gateway.GatewayMetaState.start(GatewayMetaState.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.node.Node.start(Node.java:786) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Bootstrap.start(Bootstrap.java:317) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:402) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127) ~[elasticsearch-cli-7.9.1.jar:7.9.1]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126) ~[elasticsearch-7.9.1.jar:7.9.1]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92) ~[elasticsearch-7.9.1.jar:7.9.1]
原因不明のため、とりあえず "apt-get install elasticsearch=7.8.0" で 元々のバージョン Elasticsearch 7.8.0 にバージョンダウンしてみる。
root@user-pc:/var/log/elasticsearch# apt-get install elasticsearch=7.8.0
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
  libfprint-2-tod1 libllvm9
これを削除するには 'apt autoremove' を利用してください。
以下のパッケージは「ダウングレード」されます:
  elasticsearch
アップグレード: 0 個、新規インストール: 0 個、ダウングレード: 1 個、削除: 0 個、保留: 0 個。
319 MB 中 0 B のアーカイブを取得する必要があります。
この操作後に 111 kB のディスク容量が解放されます。
続行しますか? [Y/n] y
dpkg: 警告: elasticsearch を 7.9.1 から 7.8.0 にダウングレードしています
(データベースを読み込んでいます ... 現在 202389 個のファイルとディレクトリがインストールされています。)
.../elasticsearch_7.8.0_amd64.deb を展開する準備をしています ...
elasticsearch (7.8.0) で (7.9.1 に) 上書き展開しています ...
elasticsearch (7.8.0) を設定しています ...
新バージョンの設定ファイル /etc/elasticsearch/log4j2.properties をインストールしています ...
Created elasticsearch keystore in /etc/elasticsearch/elasticsearch.keystore
systemd (245.4-4ubuntu3.2) のトリガを処理しています ...
Elasticsearchのサービスを起動してみる。
user@user-pc:~$ sudo systemctl start elasticsearch.service
[sudo] user のパスワード:
user@user-pc:~$ systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
    Loaded: loaded (/lib/systemd/system/elasticsearch.service; enabled; vendor preset: enabled)
    Active: active (running) since Fri 2020-09-04 17:02:06 JST; 15s ago
      Docs: https://www.elastic.co
  Main PID: 14152 (java)
      Tasks: 82 (limit: 4656)
    Memory: 1.3G
    CGroup: /system.slice/elasticsearch.service
            ├─14152 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative>
            └─14356 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

9月 04 17:01:44 user-pc systemd[1]: Starting Elasticsearch...
9月 04 17:02:06 user-pc systemd[1]: Started Elasticsearch.
lines 1-13/13 (END)
Fessのサービスを起動してみる。
user@user-pc:~$ sudo systemctl start fess.service
user@user-pc:~$ systemctl status fess.service
● fess.service - Fess
    Loaded: loaded (/lib/systemd/system/fess.service; enabled; vendor preset: enabled)
    Active: active (running) since Fri 2020-09-04 17:02:44 JST; 12s ago
      Docs: http://fess.codelibs.org/
  Main PID: 14429 (java)
      Tasks: 32 (limit: 4656)
    Memory: 608.4M
    CGroup: /system.slice/fess.service
            └─14429 /bin/java -Xms512m -Xmx512m -XX:MaxMetaspaceSize=256m -XX:CompressedClassSpaceSize=32m -Djava.awt.headless=true -Dhttp>

9月 04 17:02:44 user-pc systemd[1]: Started Fess.

正常に起動できた。


Elasticsearch

Fess #8:作成したインデックスが消えてしまう


FessのスケジューラーでDefault Crawlerが動作し、正しくインデックスが作成、また、検索出来ることも確認したのだが、
しばらくすると何も検索できなくなってしまう。(検索結果がゼロ)

原因

インデックスには有効期限があり、有効期限を過ぎるとインデックスは削除されてしまう。
有効期限の既定値は3日

毎日インデックスを作成しておけば、このような現象は発生しない?

設定変更

とりあえずインデックスが削除されないように設定を行う。
Fessの管理者画面から [システム] > [全般] > "クローラー" のところの "以前のドキュメントを削除" に "-1" を設定する。


Fess

Fess #6:URLで検索対象を分けたい

URLで検索対象を分けたい。

※ 前回記事:#5 エラー その2
記事一覧


例)
http://localhost/sales/ … 営業系資料の検索
http://localhost/tech/ … 技術系資料の検索 など

fessの仮想ホスト機能を使えばできそうだが、ドキュメントを読んでもよくわからない。


全文検索, Fess, 調査中

その他の記事