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」と表示されています。
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
以下の通りアクセスできるようになりました。