Fessで外部のElasticsearchクラスタを使用する

# Fessとは
公式サイト: [http://fess.codelibs.org/ja/](http://fess.codelibs.org/ja/)
Fessとは、Javaで作られた全文検索サーバーです。Github上にApacheライセンスで公開されており、Googleの検索エンジンのようなものを簡単に導入することができます。
また、GUIによる操作で設定を行えるため、管理も容易に行えます。
今回は既に構築してあるElasticsearchクラスタにアクセスしてみます。

# 環境
Ubuntu 16.04 LTS
java version "1.8.0_91"
Fess 10.1.1
Elasticsearch 2.3.3

# 手順
基本的にはここの[公式ドキュメント](http://fess.codelibs.org/ja/10.1/install/install.html)にのっとって進めていきます。

### Elasticsearch
まずは、Elasticsearchをダウンロード & インストールし、Fessに使用されるプラグインを導入します。

```
$ wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/deb/elasticsearch/2.3.3/elasticsearch-2.3.3.deb
$ sudo dpkg -i ./elasticsearch-2.3.3.deb
$ sudo /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-kuromoji-neologd/2.3.0
$ sudo /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-ja/2.3.0
$ sudo /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-analysis-synonym/2.3.0
$ sudo /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-configsync/2.3.0
$ sudo /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-dataformat/2.3.0
$ sudo /usr/share/elasticsearch/bin/plugin install org.codelibs/elasticsearch-langfield/2.3.0
$ sudo /usr/share/elasticsearch/bin/plugin install http://maven.codelibs.org/archive/elasticsearch/plugin/kopf/elasticsearch-kopf-2.0.1.0.zip
$ sudo /usr/share/elasticsearch/bin/plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.3.3.0
```

Fessで使用するため、Elasticsearchのコンフィグファイルに設定を追加します。

```/etc/elasticsearch/elasticsearch.yml
configsync.config_path: /var/lib/elasticsearch/config
script.engine.groovy.inline.update: on
```

以下のコマンドでOKです。

```
$ sudo echo -e "configsync.config_path: /var/lib/elasticsearch/config\nscript.engine.groovy.inline.update: on" | sudo tee -a /etc/elasticsearch/elasticsearch.yml
```



インストールを確認し、起動します。

```
$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: en
   Active: inactive (dead)
   (略)

$ sudo /bin/systemctl start elasticsearch.service
$ sudo /bin/systemctl status elasticsearch.service
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; disabled; vendor preset: en
   Active: active (running) since 月 2016-07-04 16:46:40 JST; 1s ago
   (略)

$ curl -XGET "localhost:9200/_aliases?pretty"
{
  ".configsync" : {
    "aliases" : { }
  }
}
```

スタートアップ時に自動起動するには、
`$ sudo /bin/systemctl enable elasticsearch.service`
も実行しましょう。

### Fess

次に、Fessをダウンロード & インストールします。といっても、まだdebパッケージがないようなのでzip版を落としてきます。

```
$ wget https://github.com/codelibs/fess/releases/download/fess-10.1.1/fess-10.1.1.zip 
$ unzip fess-10.1.1.zip
```

デフォルトではFessが参照するElasticsearchは、9201と9301になっています。
fess/bin/fess.in.sh を変更して、9200と9300に変更しましょう。
ファイルの後半で使用されているので、前半に記述する必要があります。
私は3行目に追加しました。

```<fess-dir>/bin/fess.in.sh
#!/bin/sh

ES_HTTP_URL=http://localhost:9200
ES_TRANSPORT_URL=localhost:9300
FESS_DICTIONARY_PATH=/var/lib/elasticsearch/config/

(略)
```

そしてFessを起動します。
`$ ./bin/fess`
ちゃんと9200と9300でアクセスしているか確認してみましょう。

```
$ curl -XGET "localhost:9200/_aliases?pretty"
{
  "fess" : {
    "aliases" : { }
  },
  ".suggest.analyzer" : {
    "aliases" : { }
  },
  ".suggest" : {
    "aliases" : { }
  },
  ".fess_user" : {
    "aliases" : { }
  },
  ".suggest-array" : {
    "aliases" : { }
  },
  "fess.suggest" : {
    "aliases" : { }
  },
  ".fess_config" : { (略) },
  ".configsync" : {
    "aliases" : { }
  },
  "fess_log" : {
    "aliases" : { }
  }
}
```

Fessで使うインデックスが登録されていることが確認できます。

# まとめ
今回はアクセスするElasticsearchをFess側から指定してみました。
既存のリソースを使ったり、外部に構築されているElasticsearchクラスタへ接続することができますね。