Elasticserach 5.2.1 で elasticsearch-head を利用する

前回のアップグレード時、elasticsearch-headを利用する方法を記載しなかったので、記載しておきます。

Elasticsearchのバージョンアップ - goodbyegangsterのブログ

Elasticsearch 5.X よりsite plugin は利用不可になりました。詳しくは過去の公式ページになりますが、まあセキュリティ的な都合です。

Elasticsearch 5.0とともにsite pluginを動かす | Elastic

そのため、elasticsearch-headは独立したWEBサーバとして利用することになります。公式サイトはこちら。構築手順も公式にのっています。

GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster

elasticsearch-headは、Node.jsで動いており、Gruntを利用してWEBサーバを作成することになります。そもそもGruntって何だという話ですが、GruntとはJavascript用の自動化(ビルドツール)とのことです。ビルド用のスクリプトを事前に用意しておいて、それをGruntで実行すれば一括で色々処理できて便利ですよって奴です。尚、Gruntには簡易的な静的WEBサーバのプラグインがあるらしく、それを使ってWEBサーバ作っているみたいです。

手順については下記。環境はCentOS 7.2です。

Node.jsを利用しているので、Node.jsが入っているかどうか確認。入っていなければインストール

$ node --version
v6.9.2

npmも利用するので確認。npmとは、Node.jsでいうところの、cpanやpipみたいなやつです。これも入ってなければインストール

$ npm --version
4.4.2

Gruntのインストール。gruntコマンドを利用できるようにするため、「grunt-cli」をnpmを利用して入れます。

$ sudo npm install -g grunt-cli

$ grunt --version
grunt-cli v1.2.0

必要な環境は揃ったので、githubからソースを持ってきて、インストール処理します。

$ git clone git://github.com/mobz/elasticsearch-head.git
$ cd elasticsearch-head
$ npm install

インストール実行時、僕の環境では以下の警告が出ましたが、これはOS X環境で必要となるOPTIONAL DEPENDENCYなので無視してOK

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.0.0 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.1.1: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

以下のgruntコマンドでWEBサーバが9100番ポートで起動します。

$ grunt server

早速アクセスしてみますと、Elasticsearch本体に接続できず、「not connected」と表示されています。

f:id:goodbyegangster:20170316084731p:plain

Elasticsearch側でCORS(Cross-Origin Resource Sharing)を無効化しているために起こる現象で、以下の通りElasticsearchのコンフィグに設定を追加してあげることで回避可能です。

$ sudo vi /etc/elasticsearch/elasticsearch.yml
(中略)
# Enable CORS
http.cors.enabled: true
http.cors.allow-origin: "*"

$ sudo systemctl restart elasticsearch.service

以下の通りアクセスできるようになりました。 f:id:goodbyegangster:20170316085358j:plain