@johtaniの日記 2nd

@johtani ‘s blog 2nd edition

プロキシ環境でのpluginコマンドの実行

Proxy環境で働いている方も結構いると思います。 Twitter上で、Elasticsearchのpluginコマンドでプラグインがインストールできなくて困っている方がいたので、 調べてみたのでメモしておきます。

プラグインコマンド

Elasticsearchでは、プラグインという形でいくつかの便利な機能が公開されています。 形態素解析ライブラリのKuromojiを使うためのプラグインや、クラスタの管理がGUIで可能なkopfプラグインなどがあります。 公式、サードパーティいろいろです。

これらのプラグインをElasticsearchにインストールする場合、以下のコマンドを実行すれば 自動的にダウンロードしてpluginsディレクトリにインストールしてくれます。

1
./bin/plugin -i elasticsearch/elasticsearch-analysis-kuromoji/2.3.0

ここで、elasticsearch/elasticsearch-analysis-kuromoji/2.3.0がプラグインのパスになります(例では、提供元/プラグイン名/プラグインバージョンとなっています。)。

このpluginコマンドがダウンロード元にアクセスに行くのですが、プロキシ環境だとプロキシの設定が必要になります。

プロキシの指定(Mac/LinuxとWindowsでの違い)

Mac/Linux(shコマンド)

以前の記事でプロキシのポート番号などの指定方法を 以下のように説明していました。 (※昔の記事のため、kuromojiプラグインのバージョンが古いです)

ElasticsearchのpluginコマンドはJavaで実装されています。(org.elasticsearch.common.http.client.HttpDownloadHelper) プラグインのダウンロードには、java.net.URL.openConnection()から取得URLConnectionを使用しています。

ですので、pluginのインストールを行う際に、Proxy環境にある場合は以下のようにコマンドを実行します。

1
./bin/plugin -DproxyPort=ポート番号 -DproxyHost=ホスト名 -i elasticsearch/elasticsearch-analysis-kuromoji/1.5.0

LinuxやMacの環境であれば、こちらのコマンドでプロキシの指定が可能です。 ただし、Windows環境ではうまくいきません。

Elasticsearchは、環境の違いにより、ダウンロードするファイルが異なります。 Windows環境の方は、zipファイルをダウンロードしてもらうようになっています。 elasticsearchコマンドおよびpluginコマンドがbat形式で提供されているのがzipファイルとなるからです。

Windows(batコマンド)

Windows環境では次のように指定します。

1
2
set JAVA_OPTS="-DproxyHost=ホスト名 -DproxyPort=ポート番号"
bin\plugin -i elasticsearch/elasticsearch-analysis-kuromoji/2.3.0

コマンドの実装方法が少し異なるために、このようになっています。

まとめ

プロキシ環境で利用される場合は、プラグインコマンドは上記のように実行していただければと。

公式ガイドには、これらの情報を追記するPRを送る予定です。 また、WindowsのコマンドでもMac/Linuxと同様にできたほうがいい気がするので、Issueをあげようと思います。

不明点などあれば、コメントいただければと。

Comments